Если вы хотите, чтобы два списка были в точности одинаковыми, а изменение одного из них изменило бы другой, вы можете заставить их ссылаться на один и тот же список следующим образом: -
List<Integer> integerList = new ArrayList<>();
List<Integer> tempTableau = integerList;
Если вы хотите разные списки, тогда это невозможно сделать с помощью одного set()
вызова.Вам также нужно изменить другой список.
Вы можете придумать свое собственное расширение ArrayList
, которое будет принимать слушателя и вызывать его, если что-то изменится.
Обновление на основе комментариев:
Вы можете создать класс-оболочку для переноса целого числа или использовать AtomicInteger
: -
List<AtomicInteger> integerList = new ArrayList<>();
List<AtomicInteger> tempTableau = new ArrayList<>();
AtomicInteger i = new AtomicInteger(50);
integerList.add(i);
tempTableau.add(i);
integerList.get(0).set(60); // change value 50 to 60 in first list
System.out.println(tempTableau.get(0).get()); // value changed in the second
Обновление на основена дальнейшие комментарии:
Если это пользовательский объект, такой как: -
public class MyCustomClass {
private String name;
private int age;
// many other fields
// constructor, getters, setters
@Override
public String toString() {
return "MyCustomClass{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
Вы можете создать свою собственную обертку следующим образом: -
class Holder<T> {
private T object;
Holder(T object) {
this.object = object;
}
T getObject() {
return object;
}
void setObject(T object) {
this.object = object;
}
}
И затем использовать еев ваших списках: -
List<Holder<MyCustomClass>> listOne = new ArrayList<>();
List<Holder<MyCustomClass>> listTwo = new ArrayList<>();
MyCustomClass obj1 = new MyCustomClass("John", 18);
Holder<MyCustomClass> holder1 = new Holder<>(obj1);
listOne.add(holder1);
listTwo.add(holder1);
MyCustomClass obj2 = new MyCustomClass("Paul", 45);
listOne.get(0).setObject(obj2); //make holder1 hold obj2 instead of obj1 in listOne
System.out.println(listTwo.get(0).getObject()); //listTwo prints MyCustomClass{name='Paul', age=45}