资讯专栏INFORMATION COLUMN

java使用Collection.sort指定升序或降序的三种方法

骞讳护 / 1308人阅读

摘要:第一种方法,中实现接口需实现接口类升序降序第二种方法,自定义比较器类升序降序第三种,和第二种一样,不过使用匿名类升序降序

第一种方法,Bean中实现Comparator接口:

public class CollectionsTest {
    public static void main(String[] args) {
        List list = new ArrayList();  
       //BeanClass 需实现Comparable接口
        BeanClass bean1 = new BeanClass();
        BeanClass bean2 = new BeanClass();
        bean1.para = 1;
        bean2.para = 2;
        list.add(bean1;
        list.add(bean2);
        
        Collections.sort(list);
        System.out.println(list.get(0).para);
        System.out.println(list.get(1).para);
    }
}

BeanClass类

public class BeanClass implements Comparable{
    int para;
    public int compareTo(BeanClass bc) {
        // return this.para - bc.para; //升序
        return bc.para-this.para; //降序
    }
}

第二种方法,自定义比较器

public class CollectionsClass {
    public static void main(String[] args) {
        List list = new ArrayList();
        BeanClass bean1 = new BeanClass();
        BeanClass bean2 = new BeanClass();
        bean1.para = 1;
        bean2.para = 2;
        list.add(bean1);
        list.add(bean2);
        
        Collections.sort(list,new MyComparator());
        System.out.println(list.get(0).para);   
        System.out.println(list.get(1).para);   
    }
}

MyComparator类

public class MyComparator implements Comparator{
 
    public int compare(BeanClass bean1, BeanClass bean2) {
        //return bean1.para-bean2.para; //升序
        return bean2.para-bean1.para; //降序
    }
}

第三种,和第二种一样,不过使用匿名类

public class CollectionsClass {
    public static void main(String[] args) {
        List list = new ArrayList();
        BeanClass bean1 = new BeanClass();
        BeanClass bean2 = new BeanClass();
        bean1.para = 1;
        bean2.para = 2;
        list.add(bean1);
        list.add(bean2);
        
        Collections.sort(list,new Comparator(){
            @Override
            public int compare(BeanClass o1, BeanClass o2) {
                // return o1.para - o2.para;  //升序
                return o2.para - o1.para;  //降序
            }
        }); 
     System.out.println(list.get(0).para);
     System.out.println(list.get(1).para); 
     }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71663.html

相关文章

  • 前百度面试官整理的——Java后端面试题(二)

    摘要:另外,还可以调用和等很便利的方法,以返回表示字段,方法,以及构造器的对象的数组。运行结果无参构造器有参构造器和实现原理和区别和区别是一个集合接口。 对象的四种引用 强引用只要引用存在,垃圾回收器永远不会回收 showImg(https://segmentfault.com/img/bVbsYsz?w=652&h=52); 可直接通过obj取得对应的对象 如 obj.equels(new...

    thekingisalwaysluc 评论0 收藏0
  • [Leetcode] Verify Preorder Sequence in Binary Sear

    摘要:如果继续降序,说明又向左走了,这样等到下次向右走得时候也要再次更新最小值。这样,序列无效的条件就是违反了这个最小值的限定。我们同样可以用本题的方法解,不过是从数组的后面向前面遍历,因为在后面了。栈的增长方向也是从高向低了。 Verify Preorder Sequence in Binary Search Tree Given an array of numbers, verify ...

    未东兴 评论0 收藏0
  • C# 入门算法“冒泡排序“ 升序 降序 最大值 最小值 平均值

    摘要:效果图冒泡排序冒泡排序是一种排序算法就是把数字小的和数字大的进行位置的调换部分的公司招聘也拿来当做面试题为什么叫冒泡排序冒泡排序就是和水里面产生的气泡一样从小到大的慢慢的升起所以就叫冒泡排序完整代码排序 ...

    不知名网友 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<