java中的Map和List的运用(新手必看)
·
Map和List的运用:
博主最近在学习Java,今天遇到这样一个体特和大家分享一下,题目如下:

这里就是考我们如何将用Map来统计,List来排序,
其中如何来构建Map和List是有一些讲究代码如下:
Map<String,Integer> map = new HashMap<>();
List<String> list = new ArrayList<>();
for(int i=0;i<n;i++){
String s = sc.next();
list.add(s);
}
for(String s: list){
map.put(s,map.getOrDefault(s,0)+1);
}
接下来是关键:
我们需要将Map的键值对转换为List。
核心代码如下:
//在把Map的键值对转换为List
List<Map.Entry<String,Integer>>entries = new ArrayList<>(map.entrySet());
entries.sort((e1,e2)->{
int cnt = Integer.compare(e2.getValue(),e1.getValue());
if(cnt!=0){
return cnt;
}
return e1.getKey().compareTo(e2.getKey());
});
由上面的题目所知,我们想字符串以出现的频率从大到小来排列,平常的sort只是从小到大来排列,所以这里我们就需要来特意的排一下。
在entries.sort((e1,e2)中
int cnt = Integer.compare(e2.getValue(),e1.getValue());表示返回的值,当cnt大于0时,e2会排到e1前面,当cnt小于0时,e1会在e2前面,当cnt==0时,就开始比较字符序的大小,图中 return e1.getKey().compareTo(e2.getKey());
当返回的是负数时e1在e2前面,反之则反,理解方法(前面减后面)
当返回负数时就不变,返回正数时就减后面的提到前面来。
更多推荐

所有评论(0)