【发布时间】:2019-04-01 00:59:06
【问题描述】:
我有一个字符串列表。我想从列表的所有字符串中生成一个哈希码。我该怎么做?
【问题讨论】:
-
将它们添加到列表并获取list.hashCode()
我有一个字符串列表。我想从列表的所有字符串中生成一个哈希码。我该怎么做?
【问题讨论】:
如果你有一个对象列表,你可以这样做
List<String> list = ...
int hashCode = list.hashCode();
hashCode 使用内容。如果需要,有很多选项可以改进哈希码,但这是最简单的。
【讨论】:
试试这个:
int hashCode = Objects.hash(list.toArray());
【讨论】:
toArray() 返回一个Object[],它作为整个可变参数传递。
Arrays.asList( ... ).hashCode() 用于旧版本的 Java。
您可以只取列表中的hashCode,但如果您打算让List 的不同实现保持相同的字符串,那可能会很狡猾。仅依赖于字符串本身的更强大的解决方案可能是使用Arrays#hashCode:
int hash = Arrays.hashCode(list.toArray());
但是请注意,此哈希码取决于数组元素的顺序,因此如果您不关心列表中字符串的顺序,您可能希望对数组进行排序,以便相同字符串产生相同的哈希码。
【讨论】: