如何通过索引顺序将两个arraylist合并为一个arraylist

时间:2016-03-17 17:57:11

标签: java android arraylist

  

我有两个数组列表,它们包含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”];

4 个答案:

答案 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);