[Java]Map統計都市数
2214 ワード
Map統計都市数
34839946-beijing 34839946-shanghai 42342124-hongkong 42342124-guilin 42342124-guilin 12312344-shanghai 12312344-shanghai 22341234-nanjing
出力:
コード:
-
を入力し、最も多くの人が行った都市を集計し、行った都市の数でソートします.同じ数であれば、都市名の辞書順にソートして入力します.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 set = new HashSet<>();
String input[] = str.split(" ");
for (int i = 0; i < input.length; i++) {
set.add(input[i]);
}
/* allCity */
List li = new ArrayList<>(set);
List allCity = new ArrayList<>();
for (int i = 0; i < li.size(); i++) {
String temp[] = li.get(i).split("-");
allCity.add(temp[1]);
}
/* allCity , result */
Map 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> tempResult = new ArrayList<>(result.entrySet());
tempResult.sort(new Comparator>() {
@Override
public int compare(Map.Entry o1, Map.Entry 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 r:tempResult) {
System.out.println(r.getKey() + " " + r.getValue());
}
}
}