package htmlunit; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.Set; import java.util.Comparator; public class MapSort { /** * 传入一个字符串数组 统计字符串出现次数 并按出现的次数 由高到低排序 输出 * * @param content * @return */ public static String[] counter(String[] content) { int counter = 0; Map<String, Integer> map = new HashMap<String, Integer>(); for (int i = 0; i < content.length; i++) { if (map.containsKey(content[i])) { counter = map.get(content[i]); map.put(content[i], ++counter); } else { map.put(content[i], 1); } } @SuppressWarnings("rawtypes") Map.Entry[] set = MapSort.getSortedHashtableByValue(map); String[] str = new String[set.length]; for (int i = 0; i < str.length; i++) { str[i] = set[i].getKey().toString(); } return str; } /** * @param h * @return 实现对map按照value降序排序 */ @SuppressWarnings({ "unchecked", "rawtypes" }) public static Map.Entry[] getSortedHashtableByValue(Map h) { Set set = h.entrySet(); //返回此映射中包含的映射关系的 Set 视图 Map.Entry[] entries = (Map.Entry[]) set.toArray(new Map.Entry[set.size()]); //返回一个包含set中所有元素的数组 Arrays.sort(entries, new Comparator() { //实现entries按Value降序排序 public int compare(Object arg0, Object arg1) { Long key1 = Long.valueOf(((Map.Entry) arg0).getValue() .toString()); Long key2 = Long.valueOf(((Map.Entry) arg1).getValue() .toString()); return key2.compareTo(key1); } }); return entries; } // public static void main(String[] args) throws Exception { // // Indexcs index = new Indexcs(); // // String b="通过Buffer的部分引用,我们可以得到矩阵的部分引用,比如我们可以利用这个来获取一个像素点的数据数组,而改变这个数组中的值," + // "相应的矩阵数据也会改变;再比如我们可以以其他数据类型的方式读取数据。而这些对于普通Array是不能实现的。下面我们来看一下at方法的实现"; // System.out.println(b); // System.out.println("==========================================="); // String [] a =index.analyze(b); // // for(int i=0;i<a.length;i++) // { // System.out.print(a[i]+" "); // } // System.out.println(); // System.out.println("=========================================="); // String []value=MapSort.counter(a); // for(int i=0;i<value.length;i++) // { // System.out.print(value[i]+" "); // } // } }