这两天看了看java方面的面试题,千橡的一道算法面试题即符合实际需要,又很有嚼头,自己琢磨了一下给出了一种解法,大家共同讨论学习。我觉得我给出的这个算法是很笨拙。呵呵!希望有人帮我优化优化。 import java.io.BufferedReader; import java.io.FileReader; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; /** * 解决问题: * 寻找最常见的名字:校内网是国内最大的实名制社区。现在校内网的一千万个用户的名字 * 组成的一个文本文件,其中每一行为一个名字,其中很多名字重复出现多次,一个名字重复 * 出现的次数越高,说明最常见。设计算法,把最常见的100个名字及其重复字数以降序列出 * * 注:此算法是全部排序,包括全部。若要取前100条,那么就遍历方法orderMap返回的前 * 100条即可 * @author Liangliang Zhang * */ public class StatisticNames { public static void main(String[] args) { String fileName = "D://name.txt"; Map<String, Integer> nameNoMap = getNameNoMap(fileName); Map<String, Integer> sortedMap = orderMap(nameNoMap); System.out.println(sortedMap); } /** * 根据文件路径读取文件并将文件中所存名字以名字为键,以出现次数为值的HaspMap中 * @param fileName 所存文件名字 * @return 以名字为键,以出现次数为值的HaspMap */ public static HashMap<String, Integer> getNameNoM