Java中对单个或多个字段进行排序

Java中对单个字段或多个字段进行排序

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

/**
 * @date: 2015年6月19日 上午10:11:44
 */

public class CollectionTest {
    /**
     * 主方法
     * 
     * @param args
     *            参数
     * @modify by user: {修改人} 2015年6月19日
     * @modify by reason:{原因}
     */
    public static void main(String[] args) {
        List<CollectionTest.Man> mans = new ArrayList<CollectionTest.Man>();
        CollectionTest collectionTest = new CollectionTest();
        Man man = collectionTest.new Man();
        man.setParentId(11);
        man.setAge(12);
        man.setName("某某1_孩子");
        Man man2 = collectionTest.new Man();
        man2.setParentId(2);
        man2.setAge(13);
        man2.setName("某某2_孩子");
        Man man3 = collectionTest.new Man();
        man3.setParentId(2);
        man3.setAge(16);
        man3.setName("某某1_孩子");
        mans.add(man);
        mans.add(man2);
        mans.add(man3);
        sortAge(mans);
        System.out.println("*****根据年龄排序********");
        System.out.println(mans.toString());
        sortParentIdAge(mans);
        System.out.println("*****根据父ID,年龄排序********");
        System.out.println(mans.toString());
    }

    /**
     * 根据父ID,年龄进行排序
     * 
     * @param mans
     *            人列表
     * @modify by user: {修改人} 2015年6月19日
     * @modify by reason:{原因}
     */
    private static void sortParentIdAge(List<Man> mans) {
        Collections.sort(mans, new Comparator<Man>() {
            @Override
            public int compare(Man o1, Man o2) {
                if (o1.getParentId().equals(o2.getParentId())) {
                    return o1.getAge().compareTo(o2.getAge());
                } else {
                    return o1.getParentId().compareTo(o2.getParentId());
                }
            }
        });
    }

    /**
     * 根据父ID排序
     * 
     * @param mans
     * @modify by user: {修改人} 2015年6月19日
     * @modify by reason:{原因}
     */
    private static void sortAge(List<Man> mans) {
        Collections.sort(mans, new Comparator<Man>() {
            @Override
            public int compare(Man o1, Man o2) {
                return o1.getAge().compareTo(o2.getAge());
            }
        });
    }

    public class Man {
        
        private Integer parentId;

        private Integer age;

        private String name;

        /**
         * 获取parentId
         * 
         * @return parentId parentId
         */
        public Integer getParentId() {
            return parentId;

        }

        /**
         * 设置parentId
         * 
         * @param parentId
         *            parentId
         */
        public void setParentId(Integer parentId) {
            this.parentId = parentId;
        }

        /**
         * 获取age
         * 
         * @return age age
         */
        public Integer getAge() {
            return age;

        }

        /**
         * 设置age
         * 
         * @param age
         *            age
         */
        public void setAge(Integer age) {
            this.age = age;
        }

        /**
         * 获取name
         * 
         * @return name name
         */
        public String getName() {
            return name;

        }

        /**
         * 设置name
         * 
         * @param name
         *            name
         */
        public void setName(String name) {
            this.name = name;
        }

        /**
         * @return
         * @modify by user: {修改人} 2015年6月19日
         * @modify by reason:{原因}
         */
        @Override
        public String toString() {
            return "Man [parentId=" + parentId + ", age=" + age + ", name=" + name + "]";
        }

    }
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值