lists listas lista fusionar concatenar java arraylist concatenation concat

java - listas - Cómo concatenar dos ArrayLists?



merge list java (7)

Tengo dos ArrayList de igual tamaño. La lista 1 consta de 10 nombres y la lista 2 consiste en sus números de teléfono.

Quiero combinar los nombres y el número en una ArrayList . ¿Cómo hago esto?


Puede usar .addAll() para agregar los elementos de la segunda lista al primero:

array1.addAll(array2);

Editar: en función de su aclaración anterior (" quiero un único String en el nuevo Arraylist que tenga el nombre y el número "), querrá recorrer la primera lista y anexar el ítem de la segunda lista.

Algo como esto:

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 }

Si lo pones:

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

Conseguirás:

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


Si quieres hacerlo una línea y no quieres cambiar list1 o list2, puedes hacerlo usando 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());


Una ArrayList1 se agrega a los datos,

mArrayList1.add(data);

y Second ArrayList2 para agregar otros datos,

mArrayList2.addAll(mArrayList1);


agregue una ArrayList a la segunda ArrayList como:

Arraylist1.addAll(Arraylist2);

EDITAR: si desea crear una nueva ArrayList a partir de dos ArrayList existentes, haga lo siguiente:

ArrayList<String> arraylist3=new ArrayList<String>(); arraylist3.addAll(Arraylist1); // add first arraylist arraylist3.addAll(Arraylist2); // add Second arraylist


para una lista liviana que no copia las entradas, puede usar algo como esto:

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

aquí la implementación:

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


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


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

como dices, "los nombres y números al lado del otro".