Map统计城市数量
输入用户名-所去城市
,统计去的人最多的城市,并按去的城市数量进行排序,若数量相同那么根据城市名的字典序排序
输入:
34839946-beijing 34839946-shanghai 42342124-hongkong 42342124-guilin 42342124-guilin 12312344-shanghai 12312344-shanghai 22341234-nanjing
输出:
shanghai 2
beijing 1
guilin 1
hongkong 1
nanjing 1
代码:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
/* 去重 */
Set<String> set = new HashSet<>();
String input[] = str.split(" ");
for (int i = 0; i < input.length; i++) {
set.add(input[i]);
}
/* 分析去重后的结果 存在allCity中以后使用*/
List<String> li = new ArrayList<>(set);
List<String> allCity = new ArrayList<>();
for (int i = 0; i < li.size(); i++) {
String temp[] = li.get(i).split("-");
allCity.add(temp[1]);
}
/* 统计allCity的出现次数,存在result中*/
Map<String, Integer> result = new TreeMap<>();
for (String s:allCity) {
if(result.containsKey(s)){
Integer rrr = result.get(s)+1;
result.put(s,result.get(s)+1);
}else{
result.put(s,1);
}
}
/* 对result进行排序 */
List<Map.Entry<String,Integer>> tempResult = new ArrayList<>(result.entrySet());
tempResult.sort(new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
if(o1.getValue() != o2.getValue()){
return o2.getValue().compareTo(o1.getValue());
}else{
return o1.getKey().compareTo(o2.getKey());
}
}
});
//System.out.println(tempResult);
/* 输出result */
for (Map.Entry<String ,Integer> r:tempResult) {
System.out.println(r.getKey() + " " + r.getValue());
}
}
}