public static void main(String[] args) { List<String> s = new ArrayList<>(); s.add("3"); List<String> s2 = Arrays.asList("1","2"); s2.addAll(s); System.out.println(s); }
时间: 2024-04-15 22:30:34 浏览: 159
很抱歉,我之前的回答仍然有误。根据您提供的修正后的代码,将元素 "3" 添加到了列表 s 中,并且通过 Arrays.asList 方法创建了一个包含元素 "1" 和 "2" 的不可变列表 s2。然后,使用 s2 的 addAll 方法尝试将列表 s 中的所有元素添加到 s2 中。然而,由于 Arrays.asList 返回的是一个固定大小的列表,不能进行添加或删除操作,所以会抛出 UnsupportedOperationException 异常。
正确的代码应该是使用 ArrayList 来创建 s2 列表,并且打印输出的应该是列表 s 而不是 s2,如下所示:
```java
public static void main(String[] args) {
List<String> s = new ArrayList<>();
s.add("3");
List<String> s2 = new ArrayList<>(Arrays.asList("1", "2"));
s2.addAll(s);
System.out.println(s);
}
```
这样,最终输出的结果将会是 ["3"],因为只打印了列表 s 的内容。
相关问题
public static void main(String[] args) { List<String> s = new ArrayList<>(); s.add("3"); List<String> s2 = Arrays.asList("1","2"); s2.addAll(s); System.out.println(s); }
您好!根据您提供的代码,将元素 "3" 添加到了列表 s 中,并且通过 Arrays.asList 方法创建了一个包含元素 "1" 和 "2" 的列表 s2。然后,使用 s2 的 addAll 方法将列表 s 中的所有元素添加到了 s2 中。最后,将列表 s 打印输出。所以,根据代码逻辑,最终输出的结果应该是 ["1", "2", "3"]。
帮我优化一下下面的代码: public class TestController { public static void main(String[] args) { String textA = "开发,总监:张三,李四"; String textB = "运维,总监:张三,王五"; String textC = "开发,运维:王五,李四"; List<String> textList = new ArrayList<>(Arrays.asList(textA,textB,textC)); Map<String,Set<String>> result = new HashMap<>(); for (String text : textList) { String[] split = text.split(":"); String[] positions = split[0].split(","); String[] users = split[1].split(","); for (String position : positions) { Set<String> list = result.get(position); if (list == null){ Set<String> userResult = new HashSet<>(); for (String user : users) { userResult.add(user); } result.put(position,userResult); }else { for (String user : users) { list.add(user); } } } } System.out.println(result); } }
以下是代码优化后的结果:
```java
public class TestController {
public static void main(String[] args) {
String textA = "开发,总监:张三,李四";
String textB = "运维,总监:张三,王五";
String textC = "开发,运维:王五,李四";
List<String> textList = Arrays.asList(textA, textB, textC);
Map<String, Set<String>> result = new HashMap<>();
for (String text : textList) {
String[] split = text.split(":");
String[] positions = split[0].split(",");
String[] users = split[1].split(",");
for (String position : positions) {
result.computeIfAbsent(position, k -> new HashSet<>()).addAll(Arrays.asList(users));
}
}
System.out.println(result);
}
}
```
优化点如下:
1. 将 `ArrayList` 改为 `Arrays.asList`,利用 `Arrays.asList` 生成的列表可以进行快速的初始化,且不需要额外的内存空间。
2. 将 `if (list == null)` 改为 `result.computeIfAbsent(position, k -> new HashSet<>())`,利用 `computeIfAbsent` 方法可以快速的获得键对应的值,如果值不存在,则会新建一个值并返回。
3. 将 `for (String user : users) { list.add(user); }` 改为 `result.get(position).addAll(Arrays.asList(users));`,利用 `addAll` 方法可以快速地添加一个集合的所有元素。
阅读全文
相关推荐
















