我有两个数组列表,它们包含x个相等的元素,想法是将两个arraylists组合成一个,但我想按索引顺序逐个元素添加,目前我有下面列出的这个代码,但它不是很有效:
ArrayList <String> listA = ["a", "c", "e"]
ArrayList <String> listB = ["b", "d","f"]
ArrayList <String> listC;
for (int i = 0; i < listA.size() + listB.size(); i++){
listC.add(listA.get(i));
lictC.add(listB.get(i));
}
return listC;
output = [“a”,“b”,“c”,“d”,“e”,“f”];
答案 0 :(得分:5)
正如我在评论中指出的那样,我认为这是一个XY问题。
然而,这个答案可能有所帮助。它产生List
(但不是ArrayList
),它是两个原始List
的交替视图,完全不需要进行任何复制。因此,它是O(1)
而不是O(n)
。
public static <T> List<T> alternate(final List<? extends T> list1, final List<? extends T> list2) {
final int size = list1.size();
if (list2.size() != size)
throw new IllegalArgumentException();
return new AbstractList<T>() {
@Override
public int size() {
return 2 * size;
}
@Override
public T get(int i) {
return ((i & 1) == 0 ? list1 : list2).get(i >> 1);
}
};
}
public static void main(String[] args) {
List<String> list1 = Arrays.asList("A", "B", "C");
List<String> list2 = Arrays.asList("D", "E", "F");
System.out.println(alternate(list1, list2)); // prints [A, D, B, E, C, F]
}
答案 1 :(得分:0)
只需在for循环中使用一个arraylist大小。看到我的回答:
ArrayList <String> listA = ["a", "c", "e"]
ArrayList <String> listB = ["b", "d","f"]
ArrayList <String> listC = new ArrayList(listA.size() + listB.size());
for (int i = 0; i < listA.size(); i++){
listC.add(listA.get(i));
lictC.add(listB.get(i));
}
return listC;
答案 2 :(得分:-1)
这段代码对你有用吗?
ArrayList<ArrayList<String>> arraListOfArrayList = new ArrayList<ArrayList<String>>();
ArrayList<String> arrayList = new ArrayList<String>();
arraListOfArrayList.add(arrayList);
答案 3 :(得分:-3)
您可以尝试这样做。
ArrayList<String> listC = new ArrayList<>();
listC.addAll(listA);
listC.addAll(listB);
然后排序
Collections.sort(listC);