Osm*_*lid 10 java sorting anonymous class
我有课程,我正在排序列表.
import java.util.*;
public class First
{
private static HashMap<String,Second> msgs;
public static void main(String[] args)
{
List<String> ls=new ArrayList<String>();
ls.add("fourth");
ls.add("2");
ls.add("second");
ls.add("first");
ls.add("third");
ls.add("1");
Iterator it=ls.iterator();
// before sorting
while(it.hasNext())
{
String s=(String)it.next();
System.out.println(s);
}
Collections.sort(ls, new Comparator(){
public int compare(Object o1, Object o2) {
return -1;
// it can also return 0, and 1
}
});
System.out.println(" ");
//after sorting
Iterator iti=ls.iterator();
while(iti.hasNext())
{
String s=(String)iti.next();
System.out.println(s);
}
}
}
Run Code Online (Sandbox Code Playgroud)
程序运行后,我得到这些值:
1
third
first
second
2
fourth
Run Code Online (Sandbox Code Playgroud)
我的问题是这里Collection.sort()函数的行为是什么.在从比较函数返回-1时,我们得到列表的相反顺序.那么我们如何获得其他排序订单?返回0和1的作用是什么?
Osm*_*lid 12
最后,我以这种方式修改了sort函数以获取排序数据.
Collections.sort(ls, new Comparator()
{
public int compare(Object o1, Object o2)
{
String sa = (String)o1;
String sb = (String)o2;
int v = sa.compareTo(sb);
return v;
// it can also return 0, and 1
}
}
);
Run Code Online (Sandbox Code Playgroud)
您可以这样使用匿名类:
TreeSet<String> treeSetObj = new TreeSet<String>(new Comparator<String>() {
public int compare(String i1,String i2)
{
return i2.compareTo(i1);
}
});
Run Code Online (Sandbox Code Playgroud)