为了账号安全,请及时绑定邮箱和手机立即绑定

使用 HashMap 的/HashSet 的 hashCode() 函数对数据进行排序

使用 HashMap 的/HashSet 的 hashCode() 函数对数据进行排序

繁星淼淼 2021-12-30 16:06:02
我一直在尝试创造性地使用散列函数和散列图。现在我想知道是否有办法通过强制冲突来存储和排序数据。例如,输入是一个巨大的字符串列表,目标是打印出每个长度为 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


查看完整回答
反对 回复 2021-12-30
  • 1 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信