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
   29   30   31   32   33   34   35   36   37   38   39