java 对于list集合进行规则排序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Ruoyang666/article/details/85158150

package test;

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

public class MyTest4{

    /**
     * 排序
     */
    //声明三个全局变量
    static List<Map<String,Object>> list=new ArrayList<Map<String, Object>>();
    static String name;
    static int age;
    
    public static void main(String[] args) {
        //str为age时,按年龄进行排序;str为name时,按姓名进行排序。
        String str="name";
        mysort(str);//调用mysort方法
        
    }
    //进行排序
    public static void mysort(final String str){
        //声明三个map集合并往其中放值
        Map<String,Object> map1= new LinkedHashMap<String, Object>();
        name="zhangsan";age=10;
        map1.put("name", name);
        map1.put("age", age);
        Map<String,Object> map2= new LinkedHashMap<String, Object>();
        name="wangwu";age=3;
        map2.put("name", name);
        map2.put("age", age);
        Map<String,Object> map3= new LinkedHashMap<String, Object>();
        name="lisi";age=20;
        map3.put("name",name);
        map3.put("age", age);
        //给list赋值
        list.add(map1);
        list.add(map2);
        list.add(map3);
        //运用Collections的sort排序方法
        Collections.sort(list, new Comparator<Map<String, Object>>() {
            public int compare(Map<String, Object> o1, Map<String, Object> o2) {
                Integer name1=0;
                Integer name2=0;
                if("name".equals(str)){
                    String a=o1.get("name").toString();
                    String b=o2.get("name").toString();
                     name1 = Integer.valueOf(a.charAt(0)) ;//name1是从你list里面拿出来的一个 
                     name2 = Integer.valueOf(b.charAt(0)) ; //name2是从你list里面拿出来的第二个name
                 
                }else if("age".equals(str)){
                   
                    Integer a=(Integer) o1.get("age");
                    Integer b=(Integer) o2.get("age");
                     name1 = Integer.valueOf(a) ;//name1是从你list里面拿出来的一个 
                     name2 = Integer.valueOf(b) ; //name2是从你list里面拿出来的第二个name
                }
                return name1.compareTo(name2);
            }
        });
        System.out.println( list.toString());
    }
    
}
 

猜你喜欢

转载自blog.csdn.net/Ruoyang666/article/details/85158150
今日推荐