import java.util.*;public class Test {
private static final int ONE = 1;
public static void main(String[] args) {
Map <String, Integer>m = new HashMap<String,Integer>();
for (int i=0; i<args.length; i++) {
if (!m.containsKey(args[i])) {
m.put(args[i], ONE);
} else {
int freq = m.get(args[i]);
m.put(args[i], freq + 1);
}
}
System.out.println(m.size() + "个单词被找到");
System.out.println(m);
}
}
输出的是每个单词出现的次数以及共几个单词,但是里面是无序的,怎么才能实现按出现次序从高到低排列呢?
private static final int ONE = 1;
public static void main(String[] args) {
Map <String, Integer>m = new HashMap<String,Integer>();
for (int i=0; i<args.length; i++) {
if (!m.containsKey(args[i])) {
m.put(args[i], ONE);
} else {
int freq = m.get(args[i]);
m.put(args[i], freq + 1);
}
}
System.out.println(m.size() + "个单词被找到");
System.out.println(m);
}
}
输出的是每个单词出现的次数以及共几个单词,但是里面是无序的,怎么才能实现按出现次序从高到低排列呢?
如果要从高到低,需要另外写一个Comparator,然后
Arrays.sort(m.keySet().toArray(), comparator);
不好意思,对comparator不是很了解,麻烦说清楚一点
import java.util.*;public class Test {
private static final int ONE = 1; public static void main(String[] args) {
Map<String, Integer> m = new HashMap<String, Integer>();
for (int i = 0; i < args.length; i++) {
if (!m.containsKey(args[i])) {
m.put(args[i], ONE);
} else {
int freq = m.get(args[i]);
m.put(args[i], freq + 1);
}
}
System.out.println(m.size() + "个单词被找到");
Set<Map.Entry<String, Integer>> set = m.entrySet();
Map.Entry<String,Integer>[] entries = (Map.Entry[]) set.toArray(new Map.Entry[set
.size()]);
Arrays.sort(entries, new Comparator() {
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);
}
});
for (int i = 0; i < entries.length; i++) {
System.out.println(entries[i]);
}
// System.out.println(m);
}
}
map.put("a", 2);
map.put("c", 2);
map.put("b", 3);
Map<Integer, String> sortMap = new HashMap<Integer, String>();
for (Entry entry : map.entrySet()) {
if (sortMap.containsKey((Integer) entry.getValue())) {
String temp = entry.getKey() + ":" + entry.getValue();
Integer thisKey = (Integer) entry.getValue();
sortMap.put(thisKey, sortMap.get(thisKey) + "/" + temp);
} else {
sortMap.put((Integer) entry.getValue(), entry.getKey() + ":"
+ entry.getValue());
}
}
Object[] o = sortMap.keySet().toArray();
Arrays.sort(o);
for (int i = o.length - 1; i >= 0; i--) {
System.out.println(sortMap.get(o[i]));
}