Page 34 - 4656
P. 34
Алгоритми і структури даних. Лабораторний практикум.
10
Спроби повторно додати до множини елементи з тим
самим значенням ігноруються.
Але, якщо змінити один з елементів та надати йому нове
значення, можна добитися того, щоб у HashSet з’явилися два
однакові елементи. Оскільки об’єкти класу Integer є
незмінюваними, це можна зробити лише за допомогою
рефлексії.
Спробуємо:
import java.lang.reflect.Field;
import java.util.HashSet;
public class DemoCollections {
public static void main(String[] args) throws NoSuchFieldException,
SecurityException, IllegalArgumentException, IllegalAccessException {
HashSet<Integer> set = new HashSet<>();
Integer p1 = 10;
set.add(p1);
Integer p2=20;
set.add(p2);
Field f = Integer.class.getDeclaredField("value");
f.setAccessible(true);
f.set(p2, 10);
System.out.println(set);
}
}
Тепер виводиться
10, 10
32