我有三个ArrayLists,每个都有相同的大小:
arrayListOne = {"ABC", "DEF", "GHI"}
arrayListTwo = {"JKL", "MNO", "PQR"}
arrayListThree = {"STU", "VWX", "YZ0"}
我阅读并环顾四周,但我似乎无法找到关于如何在同一索引处合并元素,然后使用合并元素创建新ArrayList
的直截了当的答案。与示例一样,
arrayListMerged = {"ABCJKLSTU", "DEFMNOVWX", "GHIPQRYZ0"}
其中"ABCJKLSTU"
是索引0处的合并元素,"DEFMNOVWX"
是索引1处的合并元素,"GHIPQRYZ0"
是索引2处的合并元素。
也许这个问题之前已经得到了回答,但我在这里很新,并且仍然需要掌握某些想法,这些想法可能导致不理解之前的答案。
答案 0 :(得分:1)
不确定您是否正在使用ArrayList,因为它们没有以这种方式初始化...
同样的概念应该适用于arraylist
String[] arrayListOne = { "ABC", "DEF", "GHI" };
String[] arrayListTwo = { "JKL", "MNO", "PQR" };
String[] arrayListThree = { "STU", "VWX", "YZ0" };
String[] arrayListMerged = new String[arrayListOne.length];
for (int i = 0; i < arrayListOne.length; i++) {
arrayListMerged[i] = arrayListOne[i] + arrayListTwo[i] + arrayListThree[i];
}
for (int i = 0; i < arrayListMerged.length; i++) {
System.out.println(arrayListMerged[i]);
}
这是Java 8方式:
List<String> arrayListMerged = arrayListOne.stream()
.map(e -> arrayListTwo.get(arrayListTwo.indexOf(e)) + e + arrayListThree.get(arrayListThree.indexOf(e))
.collect(Collectors.toList());
答案 1 :(得分:1)
正如你提到的,我假设所有列表都有相同的大小。
没有直接的内置功能。相反,您可以创建一个从0
到任何arrayList大小的循环。在该循环内部提取给定循环索引处的所有列表的字符串值,并将所有三个连接起来然后将其添加到新列表(比如newList)。继续进行所有循环迭代。
答案 2 :(得分:0)
因此,每个ArrayList具有相同的大小,只需创建一个直到一个ArrayList大小的for循环。 arrayListOne.size()
为您提供了它的大小。
使用arrayListOne.get(index)
,arrayListTwo.get(index)
,arrayListThree.get(index)
,您可以获得ArrayLists的给定索引处的值。
arrayListMerged.add(*insert merged Strings here*)
将合并后的值添加到新的ArrayList。
看看API。它在那里得到了很好的解释https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html
答案 3 :(得分:0)
我担心Java中没有开箱即用的功能。但是实现自己的相当容易。以下是我将如何做到这一点:
final int count = arrayListOne.length();
if(arrayListTwo.length() != count || arrayListThree.length() != count)
throw new InvalidArgumentException("Lists have different number of elements");
final List<String> result = new ArrayList<>(count);
for(int i=0; i<count; i++) {
result.add(arrayListOne.get(i)+arrayListTwo.get(i)+arrayListThree(i));
}
答案 4 :(得分:0)
您可以使用Java 8流:
String[] arrayListOne = {"ABC", "DEF", "GHI"};
String[] arrayListTwo = {"JKL", "MNO", "PQR"};
String[] arrayListThree = {"STU", "VWX", "YZ0"};
String[] newList = new String[3];
Arrays.stream(arrayListOne).forEach(s ->
{
int index = Arrays.asList(arrayListOne).indexOf(s);
newList[index] = s + arrayListTwo[index] + arrayListThree[index];
} );
或者更好的方法是,不要使用数组,使用ArrayList
,所以当你有不同大小的列表时,你可以这样做:
ArrayList<String> finalList = new ArrayList<>();
ArrayList<String> arrayListOne = new ArrayList<>();
ArrayList<String> arrayListTwo = new ArrayList<>();
ArrayList<String> arrayListThree = new ArrayList<>();
arrayListOne.forEach(s -> {
int index = arrayListOne.indexOf(s);
finalList.add(s + arrayListTwo.get(index) == null ? "" : arrayListTwo.get(index) + arrayListThree.get(index) == null ? "" : arrayListThree.get(index));
});