支持时间、数字、中英文数据排序数据结构是List<Map<String,String>>   例子 标题 价格 时间
       android 电子书 200  2020-12-22
       iPhone电子书 220  2020-12-22   给我的提示
   List<Map<String,String>> list=new ArrayList<Map<String,String>>();
   Map<String,String> map=new HashMap<String,String>(); 
   map.put("time","2012-2-1");
   map.put("price","203");
   map.put("title","J2EE电子书 ");
   list.add(map); 

解决方案 »

  1.   

    将list转换成数组,然后利用Arrays对数组的排序功能,当然自己要实现一个Comparatorpackage com.test;import java.util.*;public class MultiSortTest
    {
    public static void main(String[] args)
    {
    List<Map<String, String>> list = new ArrayList<Map<String, String>>();
    Map<String, String> map = new HashMap<String, String>();
    map.put("time", "2012-2-1");
    map.put("price", "203");
    map.put("title", "J2EE ebook ");
    list.add(map);
    Map<String, String> map1 = new HashMap<String, String>();
    map1.put("time", "2012-3-1");
    map1.put("price", "103");
    map1.put("title", "think in java ");
    list.add(map1);
    HashMap<String, String>[] maps = new HashMap[list.size()];
    list.toArray(maps);
    System.out.println("sort by time:");
    sort(maps, "time");
    printMaps(maps);
    System.out.println("\nsort by price:");
    sort(maps, "price");
    printMaps(maps);
    System.out.println("\nsort by title:");
    sort(maps, "title");
    printMaps(maps);

    }
    public  static void printMaps(HashMap<String, String>[] maps )
    {
    for(HashMap<String, String> map:maps)
    {
    System.out.println(map.get("time")+"\t"+map.get("price")+"\t"+map.get("title"));
    }
    }
    public static void sort(HashMap<String, String>[] maps,final String key)
    {
    Arrays.sort(maps,new Comparator<HashMap<String,String>>(){
    public int compare(HashMap<String, String> o1,
    HashMap<String, String> o2)
    {
        //利用比较hashcode来排序不太准确,实际应用中要分析的更详细点
    return o1.get(key).hashCode()-o2.get(key).hashCode();
    }
    });
    }
    }