gpt4 book ai didi

java - 在列表中流式传输不同的数组元素

转载 作者:行者123 更新时间:2023-11-30 05:41:48 25 4
gpt4 key购买 nike

我有一个ListString[6] s。我正在尝试构建一个 List<List>其中包含独特的 String每个索引处的元素。

出于某种原因,我经常遇到这个问题,搜索是否存在答案,进行大量实验,最终构建了一个不使用流的工作方法,但占用了大约 20 行。

举个例子来澄清:

//Sample items: String[] items = "AD", "AR", "BC", "DA", "RA", "DD";
// String[] items2 = "AE", "AZ", "BU", "DI", "RE", "DP";
// String[] items3 = "AD", "AO", "BU", "DZ", "RW", "DP";
List<String[]> itemsList;
List<String>[] distinctItems;

如果itemsList包含示例项目,.stream()如何将它们放入 distinctItems 中? distinctItems 应该如下所示:

//distinctItems[0].get(0) == "AD"
//distinctItems[0].get(1) == "AE"
//distinctItems[0].size() == 2 ; Has 2 unique elements in index 0

//distinctItems[1].get(0) == "AR"
//distinctItems[1].get(1) == "AZ"
//distinctItems[1].get(2) == "AO"
//distinctItems[1].size() == 3 ; Has 3 unique elements in index 1

我越来越擅长 .stream()但对于某些复合数据类型(Array[]的List),我似乎找不到正确的方法和解决方案。

非常感谢任何帮助。

最佳答案

如果我理解正确的话,你实际上想要一个 List<List<String>> ,其大小与您的 3 List<String[]> 相同,其中包含,对于每个索引;该索引的不同元素。

所以

    List<String[]> itemLists = new ArrayList<>();
itemLists.add(new String[] { "AD", "AR", "BC", "DA", "RA", "DD" });
itemLists.add(new String[] { "AE", "AZ", "BU", "DI", "RE", "DP" });
itemLists.add(new String[] { "AD", "AO", "BU", "DZ", "RW", "DP" });

List<List<String>> distinctItems =
IntStream.range(0, itemLists.get(0).length)
.mapToObj(i -> itemLists.stream().map(itemArray -> itemArray[i]).distinct().collect(toList()))
.collect(toList());

System.out.println("distinctItems = " + distinctItems);

关于java - 在列表中流式传输不同的数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55501969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com