Map.Entry求解!
/*统计字符串”abadcdffbaeba”中每个字符出现了多少次,按次数排序并输出。例如:c : 1,e : 1,d : 2,f : 2,b : 3,a : 4*/
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class Test implements Comparator<Entry<String,Long>>{
public static void main(String[] args) {
String str = "abadcdffbaeba";
Map<String,Long> result = new HashMap<String,Long>();
String[] s = str.split("");
for(int i=0;i<s.length;i++){
if("".equals(s[i])){
continue;
}
if(result.get(s[i])!=null){
result.put(s[i], result.get(s[i])+1);
}
else{
result.put(s[i], 1l);
}
}
List list = new ArrayList(result.entrySet());
Collections.sort(list, new Test());
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
//问o1和o2是什么意思,是怎么传进来的?
public int compare(Entry<String, Long> o1, Entry<String, Long> o2) {
long i = o1.getValue() - o2.getValue();
if(i==0l) {
//o2.getValue()返回的是什么?
return o2.getValue().compareTo(o1.getValue())==0 ? 1 :0;
}
return i > 0l ? 1 : 0;
}
} --------------------编程问答-------------------- 这不是Map.Entry的问题。
这是比较器的问题。
搜一下比较器就明白了。 --------------------编程问答-------------------- --------------------编程问答-------------------- o1和o2表示map中两个Entry。
o2.getValue()表示o2的值,就是result.get(o2.getKey()) --------------------编程问答-------------------- 这个查查文档哦。
补充:Java , Java SE