java如何对list进行排序

package com.fh.util;

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

import org.apache.commons.beanutils.BeanComparator;
import org.apache.commons.collections.ComparatorUtils;
import org.apache.commons.collections.comparators.ComparableComparator;
import org.apache.commons.collections.comparators.ComparatorChain;

public class SortUtil {
    public static void main(String[] args) {
        System.out.println(testMapSort());
    }

    /**
     * 对list进行排序
     * @param sortList 需要排序的list
     * @param param1   排序的参数名称
     * @param orderType 排序类型:正序-asc;倒序-desc
     */
    public static List sort(List sortList, String param1, String orderType){
        Comparator mycmp1 = ComparableComparator.getInstance ();
        if("desc".equals(orderType)){
            mycmp1 = ComparatorUtils. reversedComparator(mycmp1); //逆序(默认为正序)
        }

        ArrayList<Object> sortFields = new ArrayList<Object>();
        sortFields.add( new BeanComparator(param1 , mycmp1)); //主排序(第一排序)

        ComparatorChain multiSort = new ComparatorChain(sortFields);
        Collections.sort (sortList , multiSort);

        return sortList;
    }

    /**
     * 对list进行排序
     * @param sortList 需要排序的list
     * @param param1   排序的参数名称:参数长度
     * @param param2   排序的参数名称:排序参数
     * @param orderType 排序类型:正序-asc;倒序-desc
     */
    public static List sortParam2(List sortList, String param1,String param2, String orderType){
        Comparator mycmp1 = ComparableComparator.getInstance ();
        Comparator mycmp2 = ComparableComparator.getInstance ();
        if("desc".equals(orderType)){
            mycmp1 = ComparatorUtils. reversedComparator(mycmp1); //逆序(默认为正序)
        }

        ArrayList<Object> sortFields = new ArrayList<Object>();
        sortFields.add( new BeanComparator(param1 , mycmp1)); //主排序(第一排序)
        sortFields.add( new BeanComparator(param2 , mycmp2)); //主排序(第一排序)

        ComparatorChain multiSort = new ComparatorChain(sortFields);
        Collections.sort (sortList , multiSort);

        return sortList;
    }

    public static List testMapSort(){
        List sortList = new ArrayList();

        Map map = new HashMap();
        map.put("name", "1");
        map.put("age", "1");

        Map map2 = new HashMap();
        map2.put("name", "2");
        map2.put("age", "13");

        Map map1 = new HashMap();
        map1.put("name", "2");
        map1.put("age", "12");

        List list = new ArrayList();
        list.add(map);
        list.add(map1);
        list.add(map2);

        //return sort(list, "age", "asc");
        return sortParam2(list, "name", "age", "asc");
    }

}
时间: 2024-10-06 07:48:15

java如何对list进行排序的相关文章

用Java来写常见的排序算法

随着校招的临近 算法是校招中很重要的一个部分 总结了常见几种排序算法,各种算法的时间复杂度和空间复杂度大家也需要多了解下 package com.huwei.sort; /** * 各种排序算法 * * @author huwei * */ public class Sort { public static void main(String[] args) { int[] a = { 60, 57, 89, 47, 57, 98, 45, 35, 73 }; Sort sort = new So

java Collections.sort()实现List排序的默认方法和自定义方法

1.java提供的默认list排序方法 主要代码: List<String> list = new ArrayList();list.add("刘媛媛"); list.add("王硕");list.add("李明");list.add("刘迪");list.add("刘布"); //升序Collections.sort(list,Collator.getInstance(java.util.Lo

Java常用的7大排序算法汇总(转载)

这段时间闲了下来,就抽了点时间总结了下java中常用的七大排序算法,希望以后可以回顾! 1.插入排序算法 插入排序的基本思想是在遍历数组的过程中,假设在序号 i 之前的元素即 [0..i-1] 都已经排好序,本趟需要找到 i 对应的元素 x 的正确位置 k ,并且在寻找这个位置 k 的过程中逐个将比较过的元素往后移一位,为元素 x “腾位置”,最后将 k 对应的元素值赋为 x ,一般情况下,插入排序的时间复杂度和空间复杂度分别为 O(n2 ) 和 O(1). /** * @param int[]

Java常用三种算法排序比较

Java常用三种算法排序比较 冒泡排序: package demo1; /** * * @author xiaoye 2014-5-13 */ /** * 有N 个数据需要排序,则从第0 个数开始,依次比较第0 和第1 个数据, * 如果第0 个大于第1 个则两者交换,否则什么动作都不做,继续比较第 1 个第2个-, * 这样依次类推,直至所有数据都"冒泡"到数据顶上. 冒泡排序的效率 O(N*N ),比较 N*N/2 ,交换N*N/4 . */ public class Bubble

java常用的7大排序算法汇总

这段时间闲了下来,就抽了点时间总结了下java中常用的七大排序算法,希望以后可以回顾! 1.插入排序算法 插入排序的基本思想是在遍历数组的过程中,假设在序号 i 之前的元素即 [0..i-1] 都已经排好序,本趟需要找到 i 对应的元素 x 的正确位置 k ,并且在寻找这个位置 k 的过程中逐个将比较过的元素往后移一位,为元素 x "腾位置",最后将 k 对应的元素值赋为 x ,一般情况下,插入排序的时间复杂度和空间复杂度分别为 O(n2 ) 和 O(1). 1 2 3 4 5 6 7

Java数据结构与算法之排序

排序从大体上来讲,做了两件事情: 1.比较两个数据项: 2.交换两个数据项,或复制其中一项 一.冒泡排序 大O表示法:交换次数和比较次数都为O(N*N). 算法原理: 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 3.针对所有的元素重复以上的步骤,除了最后一个. 4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较. /** * 冒泡排序 demo * */

JAVA基础【集合类与排序】

本章主题:在本章之中,对java集合  Collections.sort方法做一个简要的回顾. package test; /**  * @author Yshuai  * @version 创建时间:2014-08-20 上午09:49:36  */ import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class 

Java面试试题之插入法排序

import javax.print.attribute.standard.MediaSize.Other; public class Sort { public static void main(String[] args) { int[] arr = new int[] { 9, 8, 7, 5, 6, 4, 2, 3, 0, 1,11 }; int[] other = new int[arr.length]; int count = 1; // count用来统计新数列中的元素个数 boo

java编程之常见的排序算法

java常见的排序算法 第一种:插入排序 直接插入排序 1, 直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排 好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数 也是排好顺序的.如此反复循环,直到全部排好顺序. (2)图示   1 public static void main(String[] args) { 2 //升序排序 3 int[] a={9,7,8,6,5,4,3,2,1}; 4 int temp=0; 5 for(int i

JAVA通过使用sort方法排序

java 代码: 对集合排序: //升序public void listSort1(){ List<Integer> list = new ArrayList<Integer>(); list.add(1); list.add(55); ... Collections.sort(list); for(int a : list){ System.out.println(a); } } //降序public void listSort2(){ List<Integer> l