用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月 忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

对list数据进行排序

2017-03-25 作者:知行合一心 举报

[java]代码库

package com.dubbo.provider.main;


import com.dubbo.provider.bean.User;
import org.apache.commons.beanutils.BeanComparator;
import org.apache.commons.collections.ComparatorUtils;
import org.apache.commons.collections.comparators.ComparableComparator;
import org.apache.log4j.Logger;

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

/**
 * Created by Administrator on 2017/3/25.
 */
public class OrderDemo {
    private static Logger logger = Logger.getLogger(PinyinUtil.class.getName());

    /**
     * main方法,用于测试
     *
     * @param args
     */
    public static void main(String[] args) {
        //order1();
        order2();
    }


    /**
     * 对List<String>类型数据进行排序
     */
    public static void order1() {
        List<String> list = new ArrayList<String>();
        list.add("易皇星");
        list.add("阿弟");
        list.add("冰球");
        list.add("崇明");
        list.add("邓小平");
        list.add("sfsf");
        list.add("jjrd");
        //根据的汉字的拼音的字母排序
        Collections.sort(list, Collator.getInstance(java.util.Locale.CHINA));
        for (int i = 0; i < list.size(); i++) {
            logger.info(list.get(i));
        }
    }

    /**
     * 对List<JavaBean>类型数据进行排序
     */
    public static void order2() {
        List<User> list = new ArrayList<User>();
        list.add(new User(1, "易皇星", "1"));
        list.add(new User(2, "阿弟", "2"));
        list.add(new User(3, "冰球", "3"));
        list.add(new User(4, "崇明", "4"));
        list.add(new User(5, "邓小平", "5"));
        list.add(new User(6, "sfsg", "6"));
        list.add(new User(7, "fhf", "7"));
        list.add(new User(8, "mdrgr", "8"));
        list.add(new User(9, "24", "9"));
        list.add(new User(10, "6", "10"));
        list.add(new User(11, null, "11"));
        //按照汉字拼音排序,支持汉字、英文混合排序。
        PinyinComparator pinyinComparator = new PinyinComparator();
        sort(list, "name", true, pinyinComparator);
        logger.info(list);
    }

    /**
     * 自定义排序方法
     *
     * @param list
     * @param fieldName
     * @param asc
     * @param cmp
     * @param <T>
     */
    public static <T> void sort(List<T> list, String fieldName, boolean asc, Comparator<?> cmp) {
        cmp = ComparatorUtils.nullLowComparator(cmp); // 允许null
        if (!asc) {
            cmp = ComparatorUtils.reversedComparator(cmp); // 逆序
        }
        Collections.sort(list, new BeanComparator(fieldName, cmp));
    }

    /**
     * 自定义排序方法
     *
     * @param list
     * @param fieldName
     * @param asc
     * @param <T>
     */
    public static <T> void sort(List<T> list, String fieldName, boolean asc) {
        Comparator<?> cmp = ComparableComparator.getInstance();
        cmp = ComparatorUtils.nullLowComparator(cmp); // 允许null
        if (!asc) {
            cmp = ComparatorUtils.reversedComparator(cmp); // 逆序
        }
        Collections.sort(list, new BeanComparator(fieldName, cmp));
    }
}

[源代码打包下载]




分享到:
更多

网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。