Java中常用的五种List声明并赋值操作方式
作者:Letol
方式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声明并赋值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!