HashMap按value的顺序输出
2016-07-22 00:00
429 查看
如果是要按照key的顺序排列的话 用TreeSet 按顺序输出就可以了,如果要按照value的顺序输出就麻烦一点点
先要得到value的list 用collections的sort方法来排序 然后安装list的顺序来输出
e.g.:
例子里面我提取出HashMap的EntrySet 放入一个List中,对這个List进行自定义Comparator安装value降序排序,然后遍历这个list 输出.从而得到按value降序的结果存入文件中.
先要得到value的list 用collections的sort方法来排序 然后安装list的顺序来输出
e.g.:
import java.io.*; import java.util.*; import java.util.Map.Entry; /** * Created by Void Young on 8:53 PM 7/16/2016 . * IDEA-Test . * 统计一个文件内每个字符的出现次数把结果输出到一个文件中 */ public class CountChar { public static void main (String[] args) throws IOException { // deom1 (); HashMap<Character, Integer> hm = new HashMap<> ();//这个是按照出现频率DESC的输出 try( BufferedReader br = new BufferedReader (new FileReader ("z:/a.txt")) ) { String s; char c; while (( s = br.readLine () ) != null) { for (int i = 0; i < s.length (); i++) { c = s.charAt (i); hm.put (c, hm.containsKey (c) ? hm.get (c) + 1 : 1); } } } Set<Entry<Character,Integer>> set = hm.entrySet (); //得到Entry的Set ArrayList<Entry<Character, Integer>> list = new ArrayList<> (); //建立一个List排序 list.addAll (set);//装入Set的全部元素 Collections.sort (list, new Comparator<Entry<Character, Integer>> () { //自定义Comparator进行排序 @Override public int compare (Entry<Character, Integer> o1, Entry<Character, Integer> o2) { return o2.getValue ()-o1.getValue ();//出现次数多的放前面 } }); try( BufferedWriter bw = new BufferedWriter (new FileWriter ("z:/2.txt")) ) { for (int i = 0; i < list.size (); i++) {//遍历List 输出到文件中 Entry<Character, Integer> characterIntegerEntry = list.get (i); bw.write (characterIntegerEntry.getKey ()+" : "+characterIntegerEntry.getValue ()); bw.newLine (); } } }
例子里面我提取出HashMap的EntrySet 放入一个List中,对這个List进行自定义Comparator安装value降序排序,然后遍历这个list 输出.从而得到按value降序的结果存入文件中.
相关文章推荐
- 用vue创建hello world,不用再担心显示message了
- 使用PortableBasemapServer 和 terrabuilder 制作MPT
- Lucene3.X中的自定义评分机制
- Lucene4.X中的自定义评分机制
- 【Arduino官方教程】数字处理示例(六):音调键盘
- Leetcode Unique Paths II
- EasyUI综合布局Layout二.银行后台局部实现模仿
- EasyUI综合布局Layout二.银行后台局部实现模仿
- EasyUI综合布局Layout二.银行后台局部实现模仿
- Subsequence Weighting
- ACM--学生排队--HDOJ 1297--Children’s Queue--大数
- iOS开发小技巧--即时通讯项目:消息发送框(UITextView)高度的变化; 以及UITextView光标复位的小技巧
- MySQL数据库中QueryCache的锁模型
- LeetCode Guess Number Higher or Lower
- 8.0 UISearchController 改变 searchBar 的取消按钮
- 工作情感2-关于UE总监的一些思考
- iOS开发小技巧--即时通讯项目:使用富文本在UILabel中显示图片和文字;使用富文本占位显示图片
- iOS开发从入门到精通-- 单行文本UITextField
- GUI 事件处理
- GUI:图形用户界面 界面设计