zoukankan      html  css  js  c++  java
  • 对HashMap中的实体类进行排序

    [java] view plaincopyprint?
    1. package demo20130414;  
    2.   
    3. import java.util.Collection;  
    4. import java.util.Collections;  
    5. import java.util.Comparator;  
    6. import java.util.HashMap;  
    7. import java.util.Iterator;  
    8. import java.util.Map;  
    9. import java.util.Map.Entry;  
    10. import java.util.Set;  
    11. import java.util.ArrayList;  
    12. import java.util.List;  
    13. public class CharCounterDemo {  
    14.     /** 
    15.      */  
    16.     public static void main(String[] args) {  
    17.         String str = "aabbccdderffisfalgjgosdrugnsdsduhgdsfugsdogosdjgosdig";  
    18.         Map<Character, Integer> map = countAll(str);  
    19.         System.out.println(map);  
    20.         // 迭代Map: 迭代所有的key,迭代所有的value迭代Entry<key,value>   
    21.         // 迭代所有的value,实现统计所有的字符总数   
    22.         Collection<Integer> values = map.values();  
    23.         Iterator<Integer> ite = values.iterator();  
    24.         int total = 0;  
    25.         while (ite.hasNext()) {  
    26.             Integer n = ite.next();  
    27.             total += n;  
    28.             System.out.print(n + " ");  
    29.         }  
    30.         System.out.println("字符总数:" + total);  
    31.         // 迭代所有的key,利用迭代所有字符实现输出统计表格   
    32.         Set<Character> keys = map.keySet();  
    33.         System.out.println("字符串中所有字符的个数:" + keys.size());  
    34.         ArrayList<Character> list = new ArrayList<Character>(keys);  
    35.         Collections.sort(list);// 自然排序   
    36.         for (Iterator<Character> i = list.iterator(); i.hasNext();) {  
    37.             Character ch = i.next();  
    38.             int n = map.get(ch);  
    39.             System.out.print(ch + ":");  
    40.             System.out.println(n + " " + ((float) n / total) * 100 + "%");  
    41.             // System.out.print(ch);   
    42.         }  
    43.         System.out.println("照字符出现的数量排序输出:");  
    44.         //迭代Entry<key:Value> 实现按照字符出现的数量排序输出   
    45.         Set<Entry<Character, Integer>> entries = map.entrySet();  
    46.         List<Entry<Character,Integer>> entList=new ArrayList<Entry<Character,Integer>>(entries);  
    47.         Collections.sort(entList, new ByValue());  
    48.         for (Iterator<Entry<Character, Integer>> i = entList.iterator(); i.hasNext();) {  
    49.                 Entry<Character,Integer> entry=i.next();  
    50.                 Character ch=entry.getKey();  
    51.                 Integer n=entry.getValue();  
    52.                 System.out.print(ch + ":");  
    53.                 System.out.println(n + " " + ((float) n / total) * 100 + "%");  
    54.         }  
    55.     }  
    56.   
    57.     private static Map<Character, Integer> countAll(String str) {  
    58.         int length = str.length();  
    59.         Map<Character, Integer> map = new HashMap<Character, Integer>();  
    60.         for (int i = 0; i < length; i++) {  
    61.             char ch = str.charAt(i);  
    62.             if (map.containsKey(ch)) {// 如果包含ch   
    63.                 int n = map.get(ch);  
    64.                 map.put(ch, n + 1);  
    65.             } else {// 如果不包含ch   
    66.                 map.put(ch, 1);  
    67.             }  
    68.         }  
    69.         return map;  
    70.     }  
    71. }  
    72. class ByValue implements Comparator<Entry<Character,Integer>>{  
    73.     public int compare(Entry<Character, Integer> o1,  
    74.             Entry<Character, Integer> o2) {  
    75.         // TODO Auto-generated method stub   
    76.         return -(o1.getValue()-o2.getValue());//从大到小排列   
    77.         //return (o1.getValue()-o2.getValue());//从小到大排列   
    78.     }  
    79. }  

    转自:http://www.cdtarena.com/javapx/201305/8568.html

  • 相关阅读:
    解决 Mac launchpad 启动台 Gitter 图标无法删除的问题
    React 与 React-Native 使用同一个 meteor 后台
    解决 React-Native mac 运行报错 error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65. To debug build logs further, consider building your app with Xcode.app, by ope
    一行命令更新所有 npm 依赖包
    swift学习笔记
    IOS语言总结
    focusSNS学习笔记
    别小看锤子,老罗真的很认真
    windowsphone开发页面跳转到另一个dll中的页面
    【令人振奋】【转】微软潘正磊谈DevOps、Visual Studio 2013新功能、.NET未来
  • 原文地址:https://www.cnblogs.com/cdtarena/p/3071478.html
Copyright © 2011-2022 走看看