|
|
1
10
考虑把你的外国班级包装在你自己的班级里。
}
然后添加
|
|
2
10
不,在相等但不可比较的类型上使用sortedmap或sortedset是一个可怕的想法。如果它们在本质上或通过比较器无法进行比较,则不应在排序集中使用它们。排序意味着有排序,这意味着你可以比较两个项目,看看哪个是“更少”。 只需使用hashmap/set。 编辑到您的编辑2 如果你不能正确地覆盖等号,在某个地方你的设计很糟糕。你需要提供更多的信息来了解你想要达到的目标。 编辑到您的编辑3 在爪哇,修改等式 不 改变可比行为。您不需要一个接口来完成这一点。 编辑到您的编辑4 不,不相等的元素不能只返回1!!
排序集使用比较
找到
集合中的元素。可比较的接口有特定的要求。你要打破的是如果
此代码打印
|
|
|
3
6
看起来您不想/不需要对元素排序。
那样的话,也许你可以用
|
|
|
4
1
如果不想存储已排序的元素,那么为什么要使用已排序的集合? 为了维护已排序的集合,插入操作(通常)具有将元素放置在正确位置的O(log n)复杂性。如果您不需要排序,那么这是浪费,因为您可以使用基于散列的集合(hashmap、hashset),这将给您0(1)的插入时间。 |
|
|
5
1
不。这些集合的目的是允许您对其中的对象进行排序,如果对象没有自然的排序顺序,那么将它们放入排序集合的目的是什么? 您应该重写equals()和hashcode()方法,并改用标准的map/set类。 |
|
|
6
1
如果您需要重写hashcode但不能,我认为您正在寻找扩展hashmap或编写自己的hashmap。 |
|
|
7
1
还不清楚,但可能是你想做的就是收集
某物
,使用与set/map相同的语义,但使用
某物
没有充分实施
在这种情况下,我建议你子类
这不是我推荐的,但你的问题并不能让你清楚地知道你想要达到什么目标。 见 http://java.sun.com/javase/6/docs/api/java/util/AbstractSet.html 和 http://java.sun.com/javase/6/docs/api/java/util/AbstractCollection.html#contains(java.lang.Object) |
|
|
8
1
如果内存不是一个大问题,那么子类hashmap和hashset将采用相等类
这样就可以定义自己的平等行为。奇怪的是它在JRE中丢失了 |
|
|
9
0
如果对象不具有可比性,则无法对其进行排序;如果两个对象不具有可比性,您如何知道哪一个应排在第一位?所以没有办法把不可比的物体放在
这个
如果要将对象放入基于哈希的集合(例如
|
|
|
10
0
正如其他人所说,如果没有自然的顺序,排序的XXX实际上不是一个选项。 但是,假设您只想以某种一致的方式列出元素,如果您只考虑用于相等性测试的字段,因为这些字段构成了“主键”,并在它们周围提出一些可能适合您的目的的数字或字母顺序。 |
|
|
11
0
在创建排序的[set map]时,只需使用提供给实现它的(自定义)比较器…
javadocs倾向于建议这样做:
|
|
|
12
0
我不确定我是否明白你的观点(我认为你是在试图从错误的方向解决问题),但如果你毕竟想要一个
更新 :根据您的报价:
在已排序的集合/映射中?然后使用
(它构造了一组
参见: |
|
|
13
0
您试图重写未知类型的equals()方法。你在考虑这个问题,希望你有一个IEquatable接口。如果必须使用sortedset/sortedmap,请提供类似于 @ptomli mentions in his answer . 相反,使用hashmap/hashset似乎是一个不错的建议。你看过那些吗? |
|
|
synthax · 具有容差级别的双精度哈希方法 8 年前 |
|
|
Relaxsingh · 附加导师程序无法正常工作***阅读说明*** 9 年前 |
|
|
user8589267 · 我的equals方法有什么问题? 9 年前 |
|
|
James W. · 带有通配符的java黑名单 9 年前 |