Storing arrays in Set and avoiding duplicates(将数组存储在 Set 中并避免重复)
问题描述
HashSet<String[]> boog = new HashSet<String[]>();
boog.add(new String[]{"a", "b", "c"});
boog.add(new String[]{"a", "b", "c"});
boog.add(new String[]{"a", "b", "d"});
结果
[a, b, c]
[a, b, d]
[a, b, c]
其中 [a,b,c]
重复,因此散列函数未按预期工作.我将如何覆盖 String 数组的 Hash 方法.或者就此而言,一个通用数组?有没有更好的方法来完成我想做的事情?
where [a,b,c]
is repeated, so the hash function is not working as expected. How would I go about overriding the Hash method for String arrays. Or for that matter, a generic array? Is there a better way to accomplish what I'm trying to do?
推荐答案
你不能.数组使用默认的基于身份的 Object.hashCode() 实现,您无法覆盖它.不要在 HashMap/HashSet 中使用数组作为键!
You can't. arrays use the default identity-based Object.hashCode() implementation and there's no way you can override that. Don't use Arrays as keys in a HashMap / HashSet!
改为使用一组列表.
这篇关于将数组存储在 Set 中并避免重复的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:将数组存储在 Set 中并避免重复
基础教程推荐
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- 降序排序:Java Map 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01