我一直在嘗試創(chuàng)造性地使用散列函數(shù)和散列圖?,F(xiàn)在我想知道是否有辦法通過強制沖突來存儲和排序數(shù)據(jù)。例如,輸入是一個巨大的字符串列表,目標(biāo)是打印出每個長度為 X 的字符串。如果我使用 HashCode 將所有字符串存儲在 HashSet 中... @Override public int hashCode() { return s.length(); }然后,我會將所有內(nèi)容按其長度編入索引。然后理論上如果我想要所有長度為 3 的字符串,我會得到索引為 3 的字符串列表。我將如何獲得索引中的列表?這會是一個好主意嗎?
1 回答

慕無忌1623718
TA貢獻1744條經(jīng)驗 獲得超4個贊
這不是目標(biāo)hashcode()。此外,在 HashMaps 中,對象未排序。在內(nèi)部是的,因為它們存儲在數(shù)組中(通過哈希碼的提醒),但該類不提供任何對其元素的索引訪問。
但是您可以擴展 a Map<Integer, List<String>>,您可以在其中將長度映射n到 lenght 字符串列表n,并實現(xiàn)此附加方法:
public void add(String s) {
// null check here
List<String> list = get(s.length);
if (list == null) {
list = new ArrayList<>();
put (s.lenght, list);
}
list.add(s);
}
然后像這樣使用它:
map.add("hello");
map.add("world");
map.add("knife");
map.add("good");
map.add("day");
map.get(5); // return list of hello, world, knife
添加回答
舉報
0/150
提交
取消