java使用匿名类排序

新手上路,请多包涵

我上课时正在对列表进行排序。

 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);
   }

}

}

程序运行后,我得到这些值:

 1
third
first
second
2
fourth

我的问题是 Collection.sort() 函数在这里的行为是什么。从比较函数返回 -1 时,我们得到列表的相反顺序。那我们怎么才能得到其他的排序顺序呢?返回0、1的作用是什么?

原文由 Osman Khalid 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 452
2 个回答

最后,我通过这种方式修改了排序函数,得到排序后的数据。

  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

       }
 });

原文由 Osman Khalid 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以这样使用匿名类:

 TreeSet<String> treeSetObj = new TreeSet<String>(new Comparator<String>() {
    public int compare(String i1,String i2)
    {
        return i2.compareTo(i1);
    }
});

原文由 Saurabh 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏