java 如何连接两个数组列表?

9bfwbjaz  于 2023-01-29  发布在  Java
关注(0)|答案(8)|浏览(252)

我有两个大小相等的ArrayList,列表1由10个名字组成,列表2由他们的电话号码组成。
我想把名字和数字压缩成一个ArrayList。我该怎么做?

vddsk6oq

vddsk6oq1#

可以使用.addAll()将第二个列表中的元素添加到第一个列表中:

array1.addAll(array2);
    • 编辑:*根据上面的说明(" 我希望在新的数组列表中有一个String,它同时包含name和number. *"),您可能希望循环遍历第一个列表,并将第二个列表中的项追加到它。

大概是这样的

int length = array1.size();
if (length != array2.size()) { // Too many names, or too many numbers
    // Fail
}
ArrayList<String> array3 = new ArrayList<String>(length); // Make a new list
for (int i = 0; i < length; i++) { // Loop through every name/phone number combo
    array3.add(array1.get(i) + " " + array2.get(i)); // Concat the two, and add it
}

如果您输入:

array1 : ["a", "b", "c"]
array2 : ["1", "2", "3"]

您将获得:

array3 : ["a 1", "b 2", "c 3"]
63lcw9qa

63lcw9qa2#

将一个数组列表添加到第二个数组列表,如下所示:

Arraylist1.addAll(Arraylist2);

**EDIT:**如果您想从两个现有的数组列表创建新的数组列表,请执行以下操作:

ArrayList<String> arraylist3=new ArrayList<String>();

arraylist3.addAll(Arraylist1); // add first arraylist

arraylist3.addAll(Arraylist2); // add Second arraylist
pcww981p

pcww981p3#

如果你想只做一行,并且不想改变list1或list2,你可以使用stream

List<String> list1 = Arrays.asList("London", "Paris");
List<String> list2 = Arrays.asList("Moscow", "Tver");

List<String> list = Stream.concat(list1.stream(),list2.stream()).collect(Collectors.toList());
v6ylcynt

v6ylcynt4#

对于不复制条目的轻量级列表,您可以使用类似于以下的语句:

List<Object> mergedList = new ConcatList<>(list1, list2);

这里的实现方式是:

public class ConcatList<E> extends AbstractList<E> {

    private final List<E> list1;
    private final List<E> list2;

    public ConcatList(final List<E> list1, final List<E> list2) {
        this.list1 = list1;
        this.list2 = list2;
    }

    @Override
    public E get(final int index) {
        return getList(index).get(getListIndex(index));
    }

    @Override
    public E set(final int index, final E element) {
        return getList(index).set(getListIndex(index), element);
    }

    @Override
    public void add(final int index, final E element) {
        getList(index).add(getListIndex(index), element);
    }

    @Override
    public E remove(final int index) {
        return getList(index).remove(getListIndex(index));
    }

    @Override
    public int size() {
        return list1.size() + list2.size();
    }

    @Override
    public void clear() {
        list1.clear();
        list2.clear();
    }

    private int getListIndex(final int index) {
        final int size1 = list1.size();
        return index >= size1 ? index - size1 : index;
    }

    private List<E> getList(final int index) {
        return index >= list1.size() ? list2 : list1;
    }

}
djp7away

djp7away5#

ArrayList<String> resultList = new ArrayList<String>();
resultList.addAll(arrayList1);
resultList.addAll(arrayList2);
9w11ddsr

9w11ddsr6#

一个ArrayList1添加到数据,

mArrayList1.add(data);

第二数组列表2添加其他数据,

mArrayList2.addAll(mArrayList1);
vhmi4jdf

vhmi4jdf7#

var arr3 = new arraylist();
for(int i=0, j=0, k=0; i<arr1.size()+arr2.size(); i++){
    if(i&1)
        arr3.add(arr1[j++]);
    else
        arr3.add(arr2[k++]);
}

如你所说,“名字和数字并排排列”。

zlhcx6iw

zlhcx6iw8#

1:可以使用addAll()

List1.addAll(List2);

2:可以使用循环:

for (String i :List2){
        List1.add(i);

    }

相关问题