--Einführung --Prämisse ――Was Sie erreichen wollen »Was ich versucht habe --Problem
Plötzlich möchte ich Map and List studieren! !! Ich dachte </ b>, also dachte ich über die Probleme nach und machte es. Ich bin auf die Rollen und Konvertierungen von Map und List gestoßen. Selbst wenn ich online gesucht habe, konnte ich keine guten Ergebnisse finden, also habe ich meine eigenen zusammengestellt und werde einen Artikel schreiben.
――Was Sie erreichen wollen
--Problem
Das Kartensystem [HashMap, LinkedHashMap, TreeMap] hat grundsätzlich keine Reihenfolge der Elemente.
Wie bei map [0] können Sie den Wert nicht nach Index abrufen.
Lösungen
Sie können die Kombination aus Kartenschlüssel und Wert mithilfe der Map.Entry-Klasse abrufen.
Sie können Eintragsobjekte in Liste speichern und nach Eintragswert von Liste [i] sortieren.
Die auf der Lösung basierenden Inhalte sind wie folgt.
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) {
//Eingangserkennung
Scanner sc = new Scanner(System.in);
String count = sc.nextLine();
String[] line = sc.nextLine().split(" ");
//Kartenerstellung
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);
}
}
//Karteneintrag abrufen → In Liste speichern
List<Entry<String, Integer>> list = new ArrayList<Entry<String, Integer>>();
for (Map.Entry<String, Integer> entry : map.entrySet()){
list.add(entry);
}
//Vergleichen Sie den Wert des Eintrags in Liste → Sortieren
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();
}
}
}
--Zusammenfassung ――Es ist wichtig, sich der Rolle jeder Klasse bewusst zu sein --Map wirft Funktionen in List, wenn Sie ein assoziatives Array und ein geordnetes Array benötigen. ――Weil ich das nicht konnte, habe ich nicht verstanden, als ich zum ersten Mal versuchte, die Karte zu sortieren.
Recommended Posts