栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java list.sort(new Comparator{}) LIst集合排序 和匿名内部类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java list.sort(new Comparator{}) LIst集合排序 和匿名内部类

package Collection;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class Test {

    public static void main(String[] args) {
        //创建List集合,存储Person对象
        List list = new ArrayList<>();

        //添加元素
        list.add(new Person("lisi", 18));
        list.add(new Person("feifei", 28));
        list.add(new Person("zhang", 33));
        list.add(new Person("yong", 35));

        //打印输出的顺序就是添加的顺序
        System.out.println( list );
        //[Person [name=lisi, age=18], Person [name=feifei, age=28], Person [name=zhang, age=33], Person [name=yong, age=35]]

        //对List集合中的元素排序, 想要对List集合中的Person对象按照年龄降序排序
        //调用方法时,传递Comparator的匿名内部类对象, 通过泛型指定比较对象的数据类型
//        list.sort(new Comparator() {
//            //在匿名内部类重写接口的抽象方法
//            @Override
//            public int compare(Person o1, Person o2) {
//                //在compare方法中指定比较规则 , 按年龄降序
//                return o2.age - o1.age;   //如果o1的年龄大返回负数, o2年龄大返回正数
				return o1.age - o2.age;   //如果o1的年龄大返回正数, o2年龄大返回负数
//            }
//        });

        list.sort(new Comparator() {
            @Override
            public int compare(Person o1, Person o2) {
//                return o1.age-o2.age;
                return o2.age-o1.age;
            }

        });
        System.out.println( list );

        //对List排序, 根据姓名升序
//        list.sort(new Comparator() {
//            @Override
//            public int compare(Person o1, Person o2) {
				return o1.name.compareTo(o2.name); 	//姓名升序
//                return o2.name.compareTo(o1.name); 	//姓名降序
//            }
//        });
        list.sort(new Comparator() {
            @Override
            public int compare(Person o1, Person o2) {
                return o1.name.compareTo(o2.name);
            }
        });
        System.out.println(list);
    }
    static class Person{
        String name;
        int age;

        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
        public  boolean equals(Object o){
            if(o==null||!(o instanceof Person)){
                return false;
            }
            else if(this==o){
                return true;
            }
            else {
                Person p=(Person) o;
                if(this.name.equals(p.name));
                return true;
            }
        }
        public String toString(){

            return this.name+" "+this.age;
        }
    }
}

o1 在前为升序排序
o2 在前为降序排序
具体实现看源码

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/606057.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号