Подтвердить что ты не робот

Как согласовать два массива?

У меня есть два ArrayList равного размера. Список 1 состоит из 10 имен, а список 2 состоит из их номеров телефонов.

Я хочу объединить имена и числа в один ArrayList. Как это сделать?

4b9b3361

Ответ 1

Вы можете использовать .addAll(), чтобы добавить элементы второго списка к первому:

array1.addAll(array2);

Изменить: Основываясь на вашем пояснении выше ( "Мне нужна одна строка в новом Arraylist, у которой есть имя и номер".), вы хотели бы пропустить первый список и добавить элемент из второго списка.

Что-то вроде этого:

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"]

Ответ 2

добавьте один ArrayList ко второму ArrayList как:

Arraylist1.addAll(Arraylist2);

EDIT:, если вы хотите создать новый ArrayList из двух существующих ArrayList, выполните следующие действия:

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

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

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

Ответ 3

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

Ответ 4

Один массив ArrayList1 добавляет данные,

mArrayList1.add(data);

и Second ArrayList2 для добавления других данных,

mArrayList2.addAll(mArrayList1);

Ответ 5

для облегченного списка, который не копирует записи, вы можете использовать sth следующим образом:

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;
    }

}

Ответ 6

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++]);
}

как вы говорите, "имена и числа рядом друг с другом".