关于collections.sort()方法的应用

HashMap 不可以排序,当记录的数据通过HashMap,却想要排序,只有将map.entrySet转换为List,通过使用List中collections.sort()方法进行排序,可对key值,value值,或者其他自定义之进行排序。
需要记录字符串中不同字符的个数,使用HashMap,通过遍历将字符串所有字符记录到HashMap里,然后map.entrySet转换为List;进而去调用Collections.srot();进行排序


public class Eg{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);//通过后台输入,创建Scanner
        String str = scanner.nextLine();//在控制台的到字符串
        char[] c =str.toCharArray();//字符串转换为Char数组

        //创建HashMap key值是Character(字符),value值是Integer(原始数据类型int)
        HashMap<Character,Integer> map = new HashMap<Character,Integer>();

        //for循环遍历char,记录到HashMap;key值是字符,value值是个数
        for(int i = 0;i < c.length;i++){
            //当key值为一个的时候,value=1,并put,反之则value+1
            if(!map.containsKey(c[i])){
                map.put(c[i],1);
            }else{
                int count=map.get(c[i])+1;//valu值加1
                map.put(c[i],count);
            }
        }
        System.out.print(map);//打印map验证

    //将map.entrySet转换为List进行排序
    // Map.Entry接口:
    //Map的entrySet()方法返回一个实现Map.Entry接口的对象集合。集合中每个对象都是底层Map中一个特定的键/值对。
        ArrayList<Map.Entry<Character,Integer>> list = new ArrayList<Map.Entry<Character,Integer>>(map.entrySet());

    //使用collections.sort()方法
        Collections.sort(list,new Compare<Map.entry<Character,Integer>>(){
            //排序                        
            @Override
                public int compare(Entry<Character, Integer> o1,
                        Entry<Character, Integer> o2) {
                    //return o1.getValue().compareTo(o2.getValue());//顺序排序
                    return o2.getValue().compareTo(o1.getValue());//倒序排序
                }
        });
    //通过for循环遍历所有数据
        for(Map.Entry<Character,Integer>mapping:list){
            System.oiut.print(mapping.getKey()+":"+mapping.getValue()+",");
        }
    }
}

//转自http://www.cnblogs.com/guanjie20/p/3769772.html
1.Mapjava中的接口Map.EntryMap的一个内部接口
2.Map提供了一些常用方法,如keySet()、entrySet()等方法。
3.keySet()方法返回值是Map中key值的集合entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry。
4.Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值