我正在使用java.util.concurrent.ConcurrentSkipListSet
。我定义了一个类别People
,其对象保存在ConcurrentSkipListSet<People>
,Comparator<People>
比较Age
的People
中,并且ConcurrentSkipListSet<People>
对象通过此Comparator<People>
构建。Java:Comparator(a,b)== 0为ConcurrentSkipListSet时会发生什么?
如果我有具有相同Age
2个People
对象,例如a.Age.equals(b.Age)
,会发生什么? a
和b
在ConcurrentSkipListSet
?还是只有一个?
它需要这样的Comparator
必须与一致等于,但对我来说,a.Age.equals(b.Age)
绝对不等于a.equals(b)
。我只想通过Age
对People
对象进行排序。
class ComparatorHSD implements Comparator<People> {
public int compare(People s0, People s1) {
int rv = 0;
if (s0.Age > s1.Age) {
rv = 1;
} else if (s0.Age < s1.Age) rv = -1;
return rv;
}
如果我不定义rv = 0
,程序冥冥中似乎被卡住,不会终止:现在
如下我的比较器来实现。所以我已经定义了它?为什么?
@gurung你为什么斜体代码样本?为什么有些但不是全部? – corsiKa 2011-12-15 20:05:58
@ toto2大减1.不要在比较中采取减法的快捷方式。 http://stackoverflow.com/questions/2728793/java-integer-what-is-faster-comparison-or-subtraction – corsiKa 2011-12-15 22:17:32