Я хочу сохранить значение на основе ключа, состоящего из множества элементов. Что-то вроде приведенного ниже примера. Конечно, я знаю, что мой псевдо-пример не будет работать, поскольку хэш объекта, вероятно, будет его адресом, который будет уникальным для каждого нового экземпляра, независимо от его содержимого.Как использовать набор элементов в качестве ключевых в java-картах?
// in this pseudo-example this is my SET http://algs4.cs.princeton.edu/35applications/SET.java.html
// but the idea is that values are unique
HashMap<SET<Integer>, String> map = new HashMap<>();
SET a = new SET();
a.add(1);
a.add(2);
a.add(5);
SET b = new SET();
b.add(5);
b.add(1);
b.add(2);
map.put(a, "w00t");
System.out.println(map.get(b)); // I would want to get "w00t" because my key is the same set of elements
Конечно, я могу просто сортировать и сцепить значения SET в виде строки с разделителями и использовать его в HashMap<String, String>
структуре, но это просто не чувствует себя хорошо. Я совершенно новичок в программировании на Java, поэтому может быть очевидное решение, которое мне не хватает.
Вы должны изучить 'keySet()'. Также это 'Set', а не' SET' –
. Думаю, здесь есть большая проблема, если вы хотите использовать коллекции для этой работы. Все они изменяемы. Что делать, если вы добавляете наборы (2,3) и (1,2,3), но потом вы решили удалить {1} со второго набора? Лучше создайте для этого отдельный неизменный объект, иначе это будет тревожным. – pnadczuk
Я понимаю это, но в моем случае я не буду изменять объекты, как только я их сохраню. В идеале я хотел бы иметь неизменяемый объект, который я инициализирую из другого итерабельного, но нет никого, что я могу найти :( – ddinchev