为什么我使用 java TreeSet Compare 方法获得此输出?
Why i am getting this output using java TreeSet Compare method?
我使用比较器 class 来定义排序 StringBuffer.I 已经实现了比较器 class 和比较器方法比较。
为什么我得到这样的输出?
代码:
import java.util.Comparator;
import java.util.TreeSet;
public class SortestSetDemo {
public static void main(String[] args) {
TreeSet t1 = new TreeSet(new MyComparator());
t1.add(new StringBuffer("a"));
// t1.add("d");
t1.add(new StringBuffer("q"));
t1.add(new StringBuffer("w"));
t1.add(new StringBuffer("r"));
System.out.println(t1);
}
}
class MyComparator implements Comparator {
public int compare(Object ob1, Object ob2) {
// String i1=(String)ob1;
String i1 = ob1.toString();
// String i2=(String)ob2;
String i2 = ob2.toString(); //corrected error here instead of ob1.toString it is ob2.toString()
return -i1.compareTo(i2);
}
}
显示的输出:
[a] 而不是 [a,q,r,w]
您的代码中有错字。 String i2 = ob1.toString();
。
这应该是
String i2 = ob2.toString();
下面的代码工作正常 -
import java.util.Comparator;
import java.util.TreeSet;
public class SortestSetDemo {
public static void main(String[] args) {
TreeSet t1 = new TreeSet(new MyComparator());
t1.add(new StringBuffer("a"));
// t1.add("d");
t1.add(new StringBuffer("q"));
t1.add(new StringBuffer("w"));
t1.add(new StringBuffer("r"));
System.out.println(t1);
}
}
class MyComparator implements Comparator {
public int compare(Object ob1, Object ob2) {
// String i1=(String)ob1;
String i1 = ob1.toString();
// String i2=(String)ob2;
String i2 = ob2.toString();
return -i1.compareTo(i2);
}
}
输出:
[w, r, q, a]
我使用比较器 class 来定义排序 StringBuffer.I 已经实现了比较器 class 和比较器方法比较。
为什么我得到这样的输出?
代码:
import java.util.Comparator;
import java.util.TreeSet;
public class SortestSetDemo {
public static void main(String[] args) {
TreeSet t1 = new TreeSet(new MyComparator());
t1.add(new StringBuffer("a"));
// t1.add("d");
t1.add(new StringBuffer("q"));
t1.add(new StringBuffer("w"));
t1.add(new StringBuffer("r"));
System.out.println(t1);
}
}
class MyComparator implements Comparator {
public int compare(Object ob1, Object ob2) {
// String i1=(String)ob1;
String i1 = ob1.toString();
// String i2=(String)ob2;
String i2 = ob2.toString(); //corrected error here instead of ob1.toString it is ob2.toString()
return -i1.compareTo(i2);
}
}
显示的输出: [a] 而不是 [a,q,r,w]
您的代码中有错字。 String i2 = ob1.toString();
。
这应该是
String i2 = ob2.toString();
下面的代码工作正常 -
import java.util.Comparator;
import java.util.TreeSet;
public class SortestSetDemo {
public static void main(String[] args) {
TreeSet t1 = new TreeSet(new MyComparator());
t1.add(new StringBuffer("a"));
// t1.add("d");
t1.add(new StringBuffer("q"));
t1.add(new StringBuffer("w"));
t1.add(new StringBuffer("r"));
System.out.println(t1);
}
}
class MyComparator implements Comparator {
public int compare(Object ob1, Object ob2) {
// String i1=(String)ob1;
String i1 = ob1.toString();
// String i2=(String)ob2;
String i2 = ob2.toString();
return -i1.compareTo(i2);
}
}
输出:
[w, r, q, a]