gpt4 book ai didi

java - 将列表添加到另一个 Arraylist 会清除输出

转载 作者:行者123 更新时间:2023-11-30 10:08:32 25 4
gpt4 key购买 nike

我有一个邻近区域的 CSV 文件。我已经用 java 读取了文件并创建了 2D 字符串数组。我拥有的数据看起来像这样:

100 , 101
100, 102
100, 152
200, 201
200, 202

此数据表示区域 100 与 101,102,152 相邻。我想创建一个新的二维数组,其中第一个元素是“键”,后面的元素是相邻区域。像这样:

100 101 102 152
200 201 202

我使用了一个字符串数组,因为有些值并不都是整数。

这是我的尝试:

List<List<String>> outputLines = new ArrayList<>();
List<String> inner = new ArrayList<>();
for(int i =0; i<lines.size();i++){

if(inner.isEmpty()){
inner.add(array[i][0]);
inner.add(array[i][1]);
}
else if(inner.get(0).equals(array[i][0])){
inner.add(array[i][1]);
}
else{
outputLines.add(inner);
inner.clear();
inner.add(array[i][0]);
inner.add(array[i][1]);
}`

我的问题是,当我清除内部列表以便我可以开始用新列表填充列表时,它还会删除我传递给输出列表的列表。我不明白为什么。

最佳答案

public static Map<String, Set<String>> group(List<String> lines) {
final Pattern comma = Pattern.compile(",\\s*");
Map<String, Set<String>> map = new TreeMap<>();

lines.stream()
.map(comma::split)
.forEach(line -> map.compute(line[0], (region, neighbors) -> {
neighbors = neighbors != null ? neighbors : new TreeSet<>();
neighbors.add(line[1]);
return neighbors;
}));

return map;
}

演示:

List<String> data = Arrays.asList(
"100, 101",
"100, 102",
"100, 152",
"200, 201",
"200, 202");
Map<String, Set<String>> map = group(data);

输出:

"100": ["101", "102", "152"]
"200": ["201", "202"]

关于java - 将列表添加到另一个 Arraylist 会清除输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53718028/

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