g*******7 发帖数: 16 | 1 打算用treeset实现一个最小堆。可是用了自己写的comparator以后,大数(如10000)
被认为是不同的数,因此不能去重复。请问为什么呢?
public class Test {
public static void main(String[] args) {
Set treeset = new TreeSet<>(new MyComparator());
Integer[] array = new Integer[args.length];
for (int i = 0 ; i < args.length ; i ++ ) {
array[i] = Integer.valueOf(args[i]);
treeset.add(array[i]);
}
for (Integer i : treeset) {
System.out.print(i + " ");
}
}
public static class MyComparator implements Comparator {
@Override
public int compare(Integer i1, Integer i2) {
if (i1 < i2) {
return -1;
} else if (i1 == i2) {
return 0;
} else {
return 1;
}
}
}
} |
w**z 发帖数: 8232 | 2 Java == compares reference, use equals instead.
【在 g*******7 的大作中提到】 : 打算用treeset实现一个最小堆。可是用了自己写的comparator以后,大数(如10000) : 被认为是不同的数,因此不能去重复。请问为什么呢? : public class Test { : public static void main(String[] args) { : Set treeset = new TreeSet<>(new MyComparator()); : Integer[] array = new Integer[args.length]; : for (int i = 0 ; i < args.length ; i ++ ) { : array[i] = Integer.valueOf(args[i]); : treeset.add(array[i]); : }
|
j**********r 发帖数: 3798 | 3 8位以下可以过,高了应该不行。
【在 w**z 的大作中提到】 : Java == compares reference, use equals instead.
|
z**********e 发帖数: 91 | 4 直接collections.reverseorder()行么。。 |
g*******7 发帖数: 16 | 5 多谢,用equals可以了
【在 w**z 的大作中提到】 : Java == compares reference, use equals instead.
|