我想存儲一個基於由一組元素組成的鍵的值。就像下面的例子。當然,我知道我的僞示例不起作用,因爲對象的散列可能是它的地址,對於每個新實例而言,它是唯一的,而不管它的內容如何。如何在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
我當然只是排序並連接設置的值作爲一個字符串,用分離器,並使用在HashMap<String, String>
結構,但只是感覺不對。我對Java編程頗爲陌生,所以可能有一個明顯的解決方案,我錯過了。
你必須看看'keySet()'。此外,它是一個'集'而不是'SET' –
我認爲如果你想爲這個工作使用集合,這裏有一個大問題。他們都是可變的。如果添加集合(2,3)和(1,2,3),但是您決定從第二集合中刪除{1}會怎樣?更好地爲此創建一個單獨的不可變對象,否則會令人煩惱。 – pnadczuk
我意識到這一點,但在我的情況下,我不會修改對象,一旦我存儲它們。理想情況下,我想有一個不可變的對象,我從其他迭代初始化,但沒有一個,我可以找到:( – ddinchev