Я пытаюсь добавить объекты (в этом примере, чтобы сохранить простые строки) в Arraylists, которые собираются как Arraylist. Вот код:Java ArrayList из ArrayLists ведет себя странно при добавлении объектов
public static void main(String[] args) {
ArrayList dummylist = new ArrayList();
ArrayList<ArrayList<String>> dummylistlist = new ArrayList<ArrayList<String>>();
for (int j=0; j< 2; j++){
dummylistlist.add(dummylist);
String text = "test";
dummylistlist.get(j).add(text);
}
for (int j=0; j< 2; j++){
System.out.println("arraylist "+j+" has size "+dummylistlist.get(j).size());
System.out.println("Arraylist No."+j+" is ="+dummylistlist.get(j));
}
}
И выход:
arraylist 0 has size 2
Arraylist No.0 is =[test, test]
arraylist 1 has size 2
Arraylist No.1 is =[test, test]
Но я ожидал, что это будет:
arraylist 0 has size 1
Arraylist No.0 is =[test]
arraylist 1 has size 1
Arraylist No.1 is =[test]
Почему метод добавления (текст) добавляет «тест «Строка для всех подсписок, чтобы она добавлялась после каждого цикла? Я не понимаю. Можете ли вы помочь мне исправить мой код для достижения последнего результата? Заранее спасибо.
Не вызывайте 'dummylistlist.add (dummylist);' У вас есть только один список из-за этого, называемый 'dummylist'. – Kajal
Вы дважды добавляете один и тот же список в свой список и из-за этого дважды добавляете «тест» в 'dummylist'. –