gpt4 book ai didi

java - 如何组合不同列表中同一索引处的元素?

转载 作者:行者123 更新时间:2023-11-30 08:50:55 26 4
gpt4 key购买 nike

我正在尝试组合多个字符串列表。

假设我有两个(可能更多)相同大小的列表:

List<String> list1 = Arrays.asList("1One","1Two","1Three");
List<String> list2 = Arrays.asList("2One","2Two","2Three");

我想把对应索引的值组合起来放到一个新的列表中:

List3 = new {"1One2One", "1Two2Two", "1Three2Three"};

目前我有一个包含 2 个对象的列表,每个对象都包含我想要组合其中元素的列表。

所以我想将对象 1 的列表中的元素 1 与对象 2 的列表中的元素 1 组合起来。

这是我尝试过的:

public void generateFileList(List<Object> cl){


int count = 0;
String temp = "";
for(int i = 0; i < cl.size(); i++){

for (int x = 0; x < cl.get(i).getItemList().size(); x++) {
if (count == x){
temp += cl.get(i).getListItem(x);
break;
}

}
count++;
textList.add(temp);

}
}
public void test(){
for(String s : textList){
System.out.println("List Element - " + s);
}
System.out.println(textList.size());
}

打印出:

List Element - 1One
List Element - 1One1Three

我在这里做错了什么?

最佳答案

首先,您的代码无法编译。应该是:

List<String> list1 = Arrays.asList("1One","1Two","1Three");
List<String> list2 = Arrays.asList("2One","2Two","2Three");

接下来,最好使用 Iterator 而不是通过索引访问 List:

public List<String> concat(final List<String> list1, final List<String> list2) {
final Iterator<String> i1 = list1.iterator();
final Iterator<String> i2 = list2.iterator();

final List<String> combined = new ArrayList<>();
while (i1.hasNext() && i2.hasNext()) {
combined.add(i1.next() + i2.next());
}
return combined;
}

对于任意数量的 List:

public List<String> concat(final List<String>... lists) {
final List<Iterator<String>> it = new LinkedList<>();
for (List<String> l : lists) {
it.add(l.iterator());
}

final List<String> combined = new ArrayList<>();
outer:
while (true) {
final StringBuilder sb = new StringBuilder();
for (final Iterator<String> i : it) {
if (!i.hasNext()) {
break outer;
}
sb.append(i.next());
}
combined.add(sb.toString());
}
for (final Iterator<String> i : it) {
if (i.hasNext()) {
throw new IllegalArgumentException("Lists not the same length.");
}
}
return combined;
}

关于java - 如何组合不同列表中同一索引处的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30765462/

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