java 实现单词计数.top N
思路
- 先统计每个单词出现的个数
- 利用 TreeSet 的自动排序的功能
上代码
- wordcount
public void wordCount() { String route = "青岛路 青岛路 济阳路口东 济南路 宴坡路 "; Map<String, Integer> map = new HashMap<String, Integer>(); StringTokenizer st = new StringTokenizer(route, " "); while (st.hasMoreTokens()) { String letter = st.nextToken(); int count; if (map.get(letter) == null) { count = 1; } else { count = map.get(letter).intValue() + 1; } map.put(letter, count); } Set<StationEntity> set = new TreeSet<StationEntity>(); for (String word : map.keySet()) { set.add(new StationEntity(word, map.get(word))); System.out.println("word" + word + ":" + map.get(word)); } System.out.println(" 输出形式 --"); for (Iterator<StationEntity> it = set.iterator(); it.hasNext(); ) { StationEntity station = it.next(); System.out.println(station.getName() + "=" + station.getCount()); System.out.println("station"+station+":"); } }
2.StationEntity
package com.dk.route;/** * Created by zzy on 15/11/28. */public class StationEntity implements Comparable<StationEntity>{ private String name ; public int getCount() { return count; } public void setCount(int count) { this.count = count; } public String getName() { return name; } public void setName(String name) { this.name = name; } private int count; public StationEntity(String name,int count){ this.name = name; this.count = count; } public int compareTo(StationEntity o) { int cmp = count - o.count; StationEntity s = (StationEntity)o ; return cmp ==0 ?name.compareTo(o.name):-cmp; }}
3.运行结果