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

    最近研究迭代字符,稍微总结一下,以后继续补充:

        每日一道理
    “上下五千年,龙的看火不灭;古有愚公志,而今从头越…… ”站在新世纪的门槛上,我们的追求就是让祖国灿烂的喜悦飞扬在美好的明天……
    package demo20130414;
    
    import java.util.Collection;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.Set;
    import java.util.ArrayList;
    import java.util.List;
    public class CharCounterDemo {
    	/**
    	 */
    	public static void main(String[] args) {
    		String str = "aabbccdderffisfalgjgosdrugnsdsduhgdsfugsdogosdjgosdig";
    		Map<Character, Integer> map = countAll(str);
    		System.out.println(map);
    		// 迭代Map: 迭代全部的key,迭代全部的value迭代Entry<key,value>
    		// 迭代全部的value,现实计统全部的字符总数
    		Collection<Integer> values = map.values();
    		Iterator<Integer> ite = values.iterator();
    		int total = 0;
    		while (ite.hasNext()) {
    			Integer n = ite.next();
    			total += n;
    			System.out.print(n + " ");
    		}
    		System.out.println("字符总数:" + total);
    		// 迭代全部的key,用利迭代全部字符现实输出计统表格
    		Set<Character> keys = map.keySet();
    		System.out.println("字符串中全部字符的个数:" + keys.size());
    		ArrayList<Character> list = new ArrayList<Character>(keys);
    		Collections.sort(list);// 然自排序
    		for (Iterator<Character> i = list.iterator(); i.hasNext();) {
    			Character ch = i.next();
    			int n = map.get(ch);
    			System.out.print(ch + ":");
    			System.out.println(n + " " + ((float) n / total) * 100 + "%");
    			// System.out.print(ch);
    		}
    	    System.out.println("照字符现出的数量排序输出:");
    	    //迭代Entry<key:Value> 现实按照字符现出的数量排序输出
    		Set<Entry<Character, Integer>> entries = map.entrySet();
    		List<Entry<Character,Integer>> entList=new ArrayList<Entry<Character,Integer>>(entries);
    		Collections.sort(entList, new ByValue());
    		for (Iterator<Entry<Character, Integer>> i = entList.iterator(); i.hasNext();) {
    				Entry<Character,Integer> entry=i.next();
    				Character ch=entry.getKey();
    				Integer n=entry.getValue();
    				System.out.print(ch + ":");
    				System.out.println(n + " " + ((float) n / total) * 100 + "%");
    		}
    	}
    
    	private static Map<Character, Integer> countAll(String str) {
    		int length = str.length();
    		Map<Character, Integer> map = new HashMap<Character, Integer>();
    		for (int i = 0; i < length; i++) {
    			char ch = str.charAt(i);
    			if (map.containsKey(ch)) {// 如果包括ch
    				int n = map.get(ch);
    				map.put(ch, n + 1);
    			} else {// 如果不包括ch
    				map.put(ch, 1);
    			}
    		}
    		return map;
    	}
    }
    class ByValue implements Comparator<Entry<Character,Integer>>{
    	public int compare(Entry<Character, Integer> o1,
    			Entry<Character, Integer> o2) {
    		// TODO Auto-generated method stub
    		return -(o1.getValue()-o2.getValue());//从大到小排列
    		//return (o1.getValue()-o2.getValue());//从小到大排列
    	}
    }

    文章结束给大家分享下程序员的一些笑话语录: 系统程序员
      1、头皮经常发麻,在看见一个蓝色屏幕的时候比较明显,在屏幕上什幺都看不见的时候尤其明显;
      2、乘电梯的时候总担心死机,并且在墙上找reset键;
      3、指甲特别长,因为按F7到F12比较省力;
      4、只要手里有东西,就不停地按,以为是Alt-F、S;
      5、机箱从来不上盖子,以便判断硬盘是否在转;
      6、经常莫名其妙地跟踪别人,手里不停按F10;
      7、所有的接口都插上了硬盘,因此觉得26个字母不够;
      8、一有空就念叨“下辈子不做程序员了”;
      9、总是觉得9号以后是a号;
      10、不怕病毒,但是很害怕自己的程序;

  • 相关阅读:
    086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结
    085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用
    jQuery UI组件库Kendo UI使用技巧小分享
    Kendo UI ListView模板功能,让Web开发更轻松
    UI组件套包DevExpress ASP.NET Core v20.2新版亮点:全新的查询生成器
    Devexpress WinForms最新版开发.NET环境配置Visual Studo和SQL Server对应版本
    全新的桌面应用数据可视化呈现方式,Sankey Diagram控件你了解多少?
    java中的递归方法
    连接数据库查询 将查询结果写入exce文件中
    java连接mysql数据查询数据
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3065699.html
Copyright © 2011-2022 走看看