--Introduction --Prémisse ―― Ce que vous voulez réaliser ――Ce que j'ai essayé --Problème
Soudain, je veux étudier Map and List! !! J'ai pensé </ b>, alors j'ai pensé aux problèmes et je l'ai fait. Je suis tombé sur les rôles et les conversions de Map et List. Même si je cherchais en ligne, je n'ai pas trouvé de bons résultats, alors j'ai créé le mien, alors j'écrirai un article.
―― Ce que vous voulez réaliser
--Identification de la chaîne la plus fréquemment utilisée pour n entrée de chaîne arbitraire (n_1 n_2 n_3 ... ... n).
――Ce que j'ai essayé
--Implemented [clé: chaîne de caractères d'entrée, valeur: nombre d'apparences] comme Map <String, Integer> map = Map
--Problème
Le système de cartes [HashMap, LinkedHashMap, TreeMap] n'a fondamentalement aucun ordre d'éléments. --Comme la carte [0], vous ne pouvez pas récupérer la valeur par index.
Solution
Vous pouvez obtenir la combinaison de la clé de carte et de la valeur en utilisant la classe Map.Entry.
Vous pouvez stocker des objets d'entrée dans la liste et les trier par valeur d'entrée de la liste [i].
Les contenus implémentés en fonction de la solution sont les suivants.
CountMain.java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
public class CountMain {
public static void main(String[] args) {
//Détection d'entrée
Scanner sc = new Scanner(System.in);
String count = sc.nextLine();
String[] line = sc.nextLine().split(" ");
//Création de carte
Map<String, Integer> map = new HashMap<String, Integer>();
for(int i=0; i<line.length; i++){
if(!map.containsKey(line[i])){
map.put(line[i], 1);
} else {
int tmp = map.get(line[i]);
map.remove(line[i]);
map.put(line[i], tmp+1);
}
}
//Obtenir l'entrée de la carte → enregistrer dans la liste
List<Entry<String, Integer>> list = new ArrayList<Entry<String, Integer>>();
for (Map.Entry<String, Integer> entry : map.entrySet()){
list.add(entry);
}
//Comparez la valeur de l'entrée dans la liste → Trier
for (int i = 0; i < list.size(); i++){
for (int j = list.size()-1; j > i; j--){
if (list.get(j).getValue() > list.get(j-1).getValue()){
Map.Entry<String, Integer> tmpEntry = list.get(j-1);
list.set(j-1, list.get(j));
list.set(j, tmpEntry);
}
}
}
System.out.print(list.get(0).getKey());
try {
int i = 1;
while( list.get(i).getValue() == list.get(i-1).getValue() ){
System.out.print(" " + list.get(i).getKey());
i++;
}
} catch (IndexOutOfBoundsException e){
return;
} finally {
System.out.println("");
sc.close();
}
}
}
--Résumé ――Il est important d'être conscient du rôle de chaque classe --Map jette des fonctions à List lorsqu'un tableau associatif et un tableau de classement sont nécessaires «Parce que je ne pouvais pas faire cela, je n'ai pas compris la première fois que j'ai essayé de trier la carte.
Recommended Posts