Mam dwa ArrayList
s jednakowej wielkości. Lista 1 składa się z 10 nazw, a lista 2 zawiera ich numery telefonów.Jak połączyć dwa ArrayLists?
Chcę połączyć nazwy i numery w jeden ArrayList
. Jak mam to zrobic?
Mam dwa ArrayList
s jednakowej wielkości. Lista 1 składa się z 10 nazw, a lista 2 zawiera ich numery telefonów.Jak połączyć dwa ArrayLists?
Chcę połączyć nazwy i numery w jeden ArrayList
. Jak mam to zrobic?
Można użyć .addAll()
do dodaj elementy drugiej listy do pierwszej:
array1.addAll(array2);
Edytuj: Na podstawie powyższych wyjaśnień ("chcę pojedynczy ciąg w nowej tablicy, która ma zarówno nazwę, jak i numer. „), co chcesz pętli pierwszej liście i dołączyć element z drugiej listy do niego
coś takiego:.
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
}
Jeśli umieścisz w:
array1 : ["a", "b", "c"]
array2 : ["1", "2", "3"]
Dostaniesz:
array3 : ["a 1", "b 2", "c 3"]
Możesz chcieć określić rozmiar 'tablica3'. tj. 'nowa ArrayList
dodać jeden ArrayList do drugiego ArrayList jako:
Arraylist1.addAll(Arraylist2);
EDIT: jeśli chcesz utworzyć nową ArrayList z dwóch istniejących ArrayList następnie zrobić jak:
ArrayList<String> arraylist3=new ArrayList<String>();
arraylist3.addAll(Arraylist1); // add first arraylist
arraylist3.addAll(Arraylist2); // add Second arraylist
Numery są wyświetlane po nazwach, chcę nazwy i numery obok siebie. Czy możesz mi pomóc? – Anirudh
@anirudhmaddy: ok chcesz zarówno nazwę + numer w nowej liście tablic przy tym samym indeksie? –
ArrayList<String> resultList = new ArrayList<String>();
resultList.addAll(arrayList1);
resultList.addAll(arrayList2);
Jeden ArrayList1 dodać do danych,
mArrayList1.add(data);
i drugie ArrayList2 dodać inne dane,
mArrayList2.addAll(mArrayList1);
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++]);
}
jak mówisz, "nazwiska i numery obok siebie".
dla lekkiej liście, że nie kopiuje wpisy, można użyć czegoś takiego:
List<Object> mergedList = new ConcatList<>(list1, list2);
tutaj realizację:
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;
}
}
co dokładnie masz na myśli przez concat? Zbuduj nową listę, która ma 10 elementów zawierających nazwę i numer? – Henry
Chcę pojedynczy ciąg w nowej tablicy, która ma zarówno nazwę i numer. – Anirudh