Java中常用的五种List声明并赋值操作方式

 更新时间:2024年02月29日 09:51:31   作者:Letol  
在Java编程中经常会使用到集合类来存储和操作多个元素,List是一种常见的集合类,它允许存储重复的元素,并且保持元素的插入顺序,这篇文章主要给大家介绍了关于Java中常用的五种List声明并赋值操作的相关资料,需要的朋友可以参考下

方式1、新手方式

该方式声明的List:元素支持:添加、修改、删除

该方式虽然简单、直观,但并不优雅。

  List<String> list = new ArrayList<>();
  ​
  list.add("张三");
  ​
  list.add("李四");
  ​
  list.add("王五");
  ​
  list.add("赵六");
  

 使用方式

 语法最基本的声明,add() 方法添加。

方式2、使用Stream流方式

该方式声明的List:元素支持:添加、修改、删除

​  List<User> userList = Stream.of(user1, user2, user3).collect(Collectors.toList());
  userList.forEach(System.out::println);//输出

使用方式:

Stream.of                                                                    数组转换为流的常用方式之一
(user1, user2, user3)                                                  可变参数、数组,可以是:对象、字符串等
.collect(Collectors.toList());                                         流的收集操作
1、将可变参数(或数组)转换为流,
2、使用流的规约操作(终端操作):收集.collect(),
3、收集方式:Collectors.toList(),收集为List(看懂这句,需了解Stream流的实现过程)

解析

Stream.of()是创建 流 的一种方式,他可以传入多个参数创建一个Stream<T>的对象,没有中间操作,终端操作:收集,收集器转换为List集合

方式3、使用工具类为创建的List对象赋值,

该方式声明的List:元素支持:添加、修改、删除

  List<String> list = new ArrayList<>();//List规定为String类型,所以可变参数也要是String哦
  ​
  Collections.addAll(list,"张三丰","张无忌","周芷若","赵敏","张强");、
  list.forEach(System.out::println);

使用方式

指定需要添加的集合,然后通过在addAll()中传入一个 “可变参数” ,可变参数也就是类型一样,但个数不限的参数,可变参数有数组的性质,故传入一个 数组 对象也可以(多个数组对象就不满足可变参数的定义了哦~)。

方式4、创建静态集合

(该集合疑似和数组绑定),由于数组长度固定,该集合不可添加和删除元素,添加、删除就会报错,但支持修改。

      @Test
      public void test() throws Exception{
          List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
  //        int[] arr = new int[]{1,2,3};
  //        IntStream.of(arr).forEach(System.out::print);
  //        System.out.println();
  //        Integer[] arr1 = new Integer[]{1,2,3};
  //        Stream.of(arr1).forEach(System.out::println);
  //        Stream.of(arr).forEach(System.out::println);
  ​
  //        numbers.add(10);//运行报错java.lang.UnsupportedOperationException
  //        numbers.remove(0);//运行报错java.lang.UnsupportedOperationException
          numbers.set(0,5);//可以修改
          numbers.stream().forEach(System.out::println);
  //        numbers.stream().sorted().forEach(System.out::println);
  //        numbers.parallelStream().forEach(System.out::println);
      }

解析:本质是将一个数组转成List,数组的大小是固定的,所以此List不能 添加 和 删除 元素,但支持 修改 元素。

如果调用add()方法 添加 新的元素,会报异常:java.lang.UnsupportedOperationException

删除 同理。

支持 修改 。虽然不能 添加 或者 删除 但支持 修改 其中的元素。

方式5、创建不可变集合        (要求JDK1.9 --- Java9版本及以上)

该方式声明的List:元素不可以 添加、修改、删除

//只支持java9及以上版本
List list = List.of(1,2,3,4,5);
//支持Set和Map
Set set = Set.of(1,2,3,4,5);
Map map = Map.of(k,v,k,v,k,v,k,v,);

附:将一个list赋值给另一个list

1 对象引用的方式赋值

//将A的值赋给链表B
List<String> A= new ArrayList<String>();  
A.add("1");  
A.add("2");  
List<String> B = A; 

注:此时B对象相当与A对象的引用,而并不是将A对象的值单纯的传递给B对象。即:B对象的操作将直接改变A对象。如B.add(“3”);结果A中也包含了“3”;

2 非对象引用的方式赋值

单纯的把值赋予另一个list的方式有多种。如下:

(假设list A已初始化并赋值)

  • 方式一:
ArrayList B = new ArrayList<> (A);  
  • 方式二:
ArrayList B = A.clone();  
  • 方式三:
ArrayList B = new ArrayList<String>();
B.addAll(A);
  • 方式四:
for(String s: A)  {
       B.add(s);  
 }

总结 

到此这篇关于Java中常用的五种List声明并赋值操作的文章就介绍到这了,更多相关Java中List声明并赋值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java可变参数使用示例

    java可变参数使用示例

    这篇文章主要介绍了java可变参数使用示例,需要的朋友可以参考下
    2014-04-04
  • mybatis-spring:@MapperScan注解的使用

    mybatis-spring:@MapperScan注解的使用

    这篇文章主要介绍了mybatis-spring:@MapperScan注解的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 详解如何获取java中类的所有对象实例

    详解如何获取java中类的所有对象实例

    如何在运行时获取一个Java类的所有对象实例呢,本文给大家介绍一种底层实现的方式,基于jvmti,代码用C++实现,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-10-10
  • Java程序中方法的用法重载和递归

    Java程序中方法的用法重载和递归

    Java语言中的“方法”在其他语言当中也可能被称为“函数”(Function)。对于一些复杂的代码逻辑,如果希望重复使用这些代码,并且做到“随时任意使用”,那么就可以将这些代码放在一个大括号“{}”当中,并且起一个名字。使用代码的时候,直接找到名字调用即可
    2021-10-10
  • Java swing仿酷狗音乐播放器

    Java swing仿酷狗音乐播放器

    这篇文章主要为大家详细介绍了Java swing实现音乐播放器,Java开发图形界面程序音乐播放器仿酷狗音乐播放器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Springboot过滤器禁止ip频繁访问功能实现

    Springboot过滤器禁止ip频繁访问功能实现

    这篇文章主要介绍了Springboot过滤器禁止ip频繁访问功能实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • 通过简单步骤实现SpringMVC文件上传

    通过简单步骤实现SpringMVC文件上传

    这篇文章主要介绍了通过简单步骤实现SpringMVC文件上传,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Java未赋值变量的初始值解析(默认值)

    Java未赋值变量的初始值解析(默认值)

    这篇文章主要介绍了Java未赋值变量的初始值(默认值),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Spring RestTemplate使用方法示例总结

    Spring RestTemplate使用方法示例总结

    这篇文章主要介绍了Spring RestTemplate使用方法示例总结,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2025-04-04
  • java代码抓取网页邮箱的实现方法

    java代码抓取网页邮箱的实现方法

    下面小编就为大家带来一篇java代码抓取网页邮箱的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06

最新评论