Java的ArrayList的HashMap中如何排序? [英] java arraylist HashMap how to sort?

查看:377
本文介绍了Java的ArrayList的HashMap中如何排序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何排序数组?

  {A= 1,B= 1,C= 3},
{A= 1时,B= 1时,C= 2},
{A= 1,B= 11,C= 2},
{A= 1,B= 2,C= 2},
{A= 1,B= 1,C= 11}

  {A= 1,B= 1,C= 2},
{A= 1时,B= 1时,C= 3},
{A= 1,B= 1,C= 11},
{A= 1,B= 2,C= 2},
{A= 1,B= 11,C= 2}

code

  ArrayList的MYLIST =新的ArrayList();    地图<字符串,整数> MMAP =新的HashMap<字符串,整数>();
    mMap.put(A,1);
    mMap.put(B,1);
    mMap.put(C,3);
    mylist.add(MMAP);    MMAP =新的HashMap<字符串,整数>();
    mMap.put(A,1);
    mMap.put(B,1);
    mMap.put(C,2);
    mylist.add(MMAP);    MMAP =新的HashMap<字符串,整数>();
    mMap.put(A,1);
    mMap.put(B,11);
    mMap.put(C,2);
    mylist.add(MMAP);    MMAP =新的HashMap<字符串,整数>();
    mMap.put(A,1);
    mMap.put(B,2);
    mMap.put(C,2);
    mylist.add(MMAP);    MMAP =新的HashMap<字符串,整数>();
    mMap.put(A,1);
    mMap.put(B,1);
    mMap.put(C,11);
    mylist.add(MMAP);


解决方案

定义你自己比较喜欢这样的:

 公共类MyMapComparator实现比较<地图<字符串,整数>>
{
    @覆盖
    公众诠释比较(地图<字符串,整数> 01,地图<字符串,整数> O2)
    {
        INT℃;        C = o1.get(A)的compareTo(o2.get(A));
        如果(C = 0!)返回℃;        C = o1.get(B)的compareTo(o2.get(B));
        如果(C = 0!)返回℃;        返回o1.get(C)的compareTo(o2.get(C));
    }
}

然后用它来排序列表:

  Col​​lections.sort(MYLIST,新MyComparator());

How to sort array?

Before

{"A"=1, "B"=1, "C"=3}, 
{"A"=1, "B"=1, "C"=2},
{"A"=1, "B"=11, "C"=2},
{"A"=1, "B"=2, "C"=2},
{"A"=1, "B"=1, "C"=11}

After

{"A"=1, "B"=1, "C"=2},
{"A"=1, "B"=1, "C"=3},
{"A"=1, "B"=1, "C"=11},
{"A"=1, "B"=2, "C"=2}, 
{"A"=1, "B"=11, "C"=2}

Code

    ArrayList mylist = new ArrayList();

    Map<String,Integer> mMap = new HashMap<String,Integer>();
    mMap.put("A",1);
    mMap.put("B",1);
    mMap.put("C",3);
    mylist.add(mMap); 

    mMap = new HashMap<String,Integer>();
    mMap.put("A",1);
    mMap.put("B",1);
    mMap.put("C",2);
    mylist.add(mMap); 

    mMap = new HashMap<String,Integer>();
    mMap.put("A",1);
    mMap.put("B",11);
    mMap.put("C",2);
    mylist.add(mMap);

    mMap = new HashMap<String,Integer>();
    mMap.put("A",1);
    mMap.put("B",2);
    mMap.put("C",2);
    mylist.add(mMap);

    mMap = new HashMap<String,Integer>();
    mMap.put("A",1);
    mMap.put("B",1);
    mMap.put("C",11);       
    mylist.add(mMap);

解决方案

Define your own comparator like this:

public class MyMapComparator implements Comparator<Map <String, Integer>> 
{
    @Override
    public int compare (Map<String, Integer> o1, Map<String, Integer> o2) 
    {
        int c;

        c = o1.get ("A").compareTo(o2.get ("A"));
        if (c != 0) return c;

        c = o1.get ("B").compareTo(o2.get ("B"));
        if (c != 0) return c;

        return o1.get ("C").compareTo(o2.get ("C"));
    }
}

Then use it to sort your list:

Collections.sort (mylist, new MyComparator ());

这篇关于Java的ArrayList的HashMap中如何排序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆