和各位 V 友们一起讨论一下 Java 基础,有谁知道输出多少?为什么吗?

352 天前
 singularity9866

/**

2497 次点击
所在节点    Java
11 条回复
Enzoliu
352 天前
这代码看的头疼,就不能格式化一下发出来吗?
qczone
352 天前
1. 异常,因为 List.of 创建的是一个不可变的列表,不能删除增加和修改元素。
2. 应该是 collect.add("4")吧? 输出:[1, 2, 3, 4]
3. 异常,Arrays.asList 创建的是一个可变列表,大小是固定的,可以更改列表中的元素,但不能添加或删除。
YoungAD
352 天前
@qczone Arrays.asList 不能 add 但是可以 set 好像
qczone
352 天前
@YoungAD 是的老哥
wjx22
352 天前
```
public static void main(String[] args) {
List<String> list = List.of("1", "2", "3");
// list.add("4"); 报错
System.out.println(list); //输出多少?
List<String> collect = Stream.of("1", "2", "3").collect(Collectors.toList());
collect.add("4");// 正常
System.out.println(collect); //输出多少?
List<String> stringList = Arrays.asList("1", "2", "3");
// stringList.add("4"); 报错
System.out.println(stringList); //输出多少?
}
```
yazinnnn0
352 天前
有点过于八股了
Leviathann
352 天前
add 是陋习
java 在朝着 fp 语言演进,比如 record 、List.of 统统都是 immutable ,pattern matching 也只适用于 immutable 的东西
991547436
352 天前
// 使用 List.of 创建不可变列表
List<String> list = List.of("1", "2", "3");

// 尝试添加元素会导致 UnsupportedOperationException
// list.add("4");

System.out.println(list);

// 使用 ArrayList 创建可变列表
List<String> mutableList = new ArrayList<>(Arrays.asList("1", "2", "3"));
mutableList.add("4");
System.out.println(mutableList);

// 使用 Stream 创建不可变列表,然后转为可变列表
List<String> collect = Stream.of("1", "2", "3").collect(Collectors.toList());
collect.add("4"); // 这是可行的,因为是可变列表
System.out.println(collect);

// 使用 Arrays.asList 创建的列表是固定大小的,不支持添加或删除元素
List<String> stringList = new ArrayList<>(Arrays.asList("1", "2", "3"));
stringList.add("4");
System.out.println(stringList);
yajuusenpai
352 天前
不可变列表是干啥的?
oneisall8955
352 天前
看看源码,最后返回的 List 接口实现类是哪个就行了,很基础的东西
yolee599
351 天前
@yajuusenpai #9 就是用来 return 一个只读列表用来遍历的,不允许通过这个列表 add

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/997681

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX