Java8 - 如何将 List<List<String>> 添加到 List<List<String>>

zxwang

我有两个List<List<String>>,想将它们连接起来。

这是我的代码:

List<List<String>> a = Arrays.asList(Arrays.asList("a", "b", "c"));
List<List<String>> b = Arrays.asList(Arrays.asList("d", "e", "f"));
a.addAll(b);

但是,它不起作用并引发异常。

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.AbstractList.add(AbstractList.java:148)
    at java.util.AbstractList.add(AbstractList.java:108)
    at java.util.AbstractCollection.addAll(AbstractCollection.java:344)

下面的代码有效:

List<List<String>> a = new ArrayList<>();
a.add(Arrays.asList("a", "b", "c"));
List<List<String>> b = new ArrayList<>();
b.add(Arrays.asList("d", "e", "f"));
a.addAll(b);

这里有什么不同?

尼古拉斯·查拉兰比迪斯

a.addAll(b)只要外部列表 a是可变的并且您不介意修改它,您的尝试就可以工作。

可变外部列表:

List<List<String>> a = new ArrayList<>(List.of(
        List.of("a", "b", "c"),
        List.of("d", "e", "f")));

List<List<String>> b = new ArrayList<>(List.of(
        List.of("h", "i", "j"),
        List.of("k", "l", "m")));

a.addAll(b); // the 'a' will contain all the inner lists

a.forEach(System.out::println);

不可变的外部列表

如果您想保留前者ab列表和/或生成一个新列表,请使用

List<List<String>> a = List.of(
        List.of("a", "b", "c"),
        List.of("d", "e", "f"));

List<List<String>> b = List.of(
        List.of("h", "i", "j"),
        List.of("k", "l", "m"));

List<List<String>> result = Stream.of(a, b)
        .flatMap(Collection::stream)
        .collect(Collectors.toList());

result.forEach(System.out::println);

结果

两种方式共享相同的输出:

[a, b, c]
[d, e, f]
[h, i, j]
[k, l, m]

对于这种组合,内部列表是否不可变并不重要。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

泛型:将List <String>添加到List <Object>

如何将字符串添加到列表<String>?List<String> 是模型中的模型

如何在Java中将Map <String,string>添加到Map <String,List <Object >>

如何将字符串Array []元素转换/添加到List <String> []数组

C#如何将元素添加到List <string>?

如何将几个字符串添加到List <string>属性?

如何将嵌套集合中的元素添加到List <string>?

将List <string>添加到DropDownList的最佳实践

将项目添加到List <string>属性

将字符串添加到List <string>

以特定顺序将文件添加到List(String)

仅使用java8 lambdas将List <MyObject>转换为List <List <String >>

如何迭代 List<Map<String,String>> 并将其键、值添加到 Java 对象中

如何使用 java8 将 List<Employee> 转换为 Map<Employee, List<String>>?

如何将 List<String[]> 放入 Map<String, List<String>>

无法将 Dictionary<string, string> 添加到 List<Dictionary<string, string>>

如何在Java8中将List <Map <String,Object >>分组为Map <String,List <Map <String,Object >>

Java8:通过联接值将Map <String,List <String >>转换为Map <String,String>

List <List <String >>与String [] []

Java-8流:将List <{String,List <String>}>转换为Map <String,List <String >>

将字符串添加到新的List <string>(new string [] {});

如何排序List <List <String >>

C# 项目没有被添加到 List<String>

如何将`List <Student>`转换为`List <string>`?

如何将List <string>转换为List <int>?

如何将List <String>转换为List <Integer>?

如何将List <String>转换为List <Object>

如何将List <String>转换为List <MyClass>?

如何将List <decimal>转换为List <string>?