我一直在尝试创造性地使用散列函数和散列图。现在我想知道是否有办法通过强制冲突来存储和排序数据。例如,输入是一个巨大的字符串列表,目标是打印出每个长度为 X 的字符串。如果我使用 HashCode 将所有字符串存储在 HashSet 中... @Override public int hashCode() { return s.length(); }然后,我会将所有内容按其长度编入索引。然后理论上如果我想要所有长度为 3 的字符串,我会得到索引为 3 的字符串列表。我将如何获得索引中的列表?这会是一个好主意吗?
1 回答
慕无忌1623718
TA贡献1744条经验 获得超4个赞
这不是目标hashcode()。此外,在 HashMaps 中,对象未排序。在内部是的,因为它们存储在数组中(通过哈希码的提醒),但该类不提供任何对其元素的索引访问。
但是您可以扩展 a Map<Integer, List<String>>,您可以在其中将长度映射n到 lenght 字符串列表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
提交
取消