java---数组转集合

148 阅读1分钟

1.Arrays.asList

1.1 不能把基本数据类型转化为列表
int[] intarray = {1, 2, 3, 4, 5};
//List<Integer> list = Arrays.asList(intarray); 编译通不过
List<int[]> list = Arrays.asList(intarray);
log.info("intarray:{}", JSON.toJSONString(list)); //[[1,2,3,4,5]]
1.2 Arrays.ArrayList是一个定长集合,因为它没有重写add,remove方法,所以一旦初始化元素后,集合的size就是不可变的。
List<String> stringA = Arrays.asList("A", "B");
//stringA.add("C"); 报错
1.3 修改会同步 将外部数组的引用直接通过“=”赋予内部的泛型数组,所以本质指向同一个数组。
String[] strs = {"1", "2", "3"};
List<String> strings = Arrays.asList(strs);
strings.set(1, "1");
log.info("strings:{}", JSON.toJSONString(strings)); //["1","1","3"]
log.info("strs:{}", JSON.toJSONString(strs)); //["1","1","3"]

2. 基本数据类型 数组转集合的方法

2.1通过 Arrays.stream() 方法可以将数值流转化为 Stream 非特化流
int[] arr = {1, 2, 3, 4, 5};
List<Integer> collect = Arrays.stream(arr).boxed().collect(Collectors.toList());
log.info("collect:{}", JSON.toJSONString(collect)); //[1,2,3,4,5]
2.2 通过 for
int[] arr2 = {1, 2, 3, 4, 5};
List<Integer> integers = new ArrayList<>();
for (int i : arr2) {
            integers.add(i);
        }
log.info("integers:{}", JSON.toJSONString(collect)); //[1,2,3,4,5]

3. 引用数据类型 数组转集合的方法

3.1 Arrays.stream
String[] strss = {"1", "2", "3"};
List<String> collect1 = Arrays.stream(strss).collect(Collectors.toList());
collect1.add(3, "4");
collect1.set(0, "5");
log.info("collect1:{}", JSON.toJSONString(collect1)); //["5","2","3","4"]
log.info("strss:{}", JSON.toJSONString(strss)); //["1","2","3"]
3.2 ArrayList构造方法
String[] strs2 = {"1", "2", "3"};
ArrayList<String> strings2 = new ArrayList<>(Arrays.asList(strs2));
strs2[1] = "qqqq";
log.info("strings2:{}", JSON.toJSONString(strings2)); //["1","2","3"]
log.info("strs2:{}", JSON.toJSONString(strs2)); //["1","qqqq","3"]