Ich habe eine Arraylist mit ganzen Zahlen gefüllt. Ich brauche nur einen Weg, um die ersten drei ganzen Zahlen in der Arraylist zu bekommen.Top 3 der höchsten Werte in Arraylist erhalten?
Antwort
Sie müssen Ihren eigenen Komparator schreiben und Collections.sort(list, comparator)
auf Ihrem ArrayList
verwenden, was die oberen 3 Ganzzahlen an die Spitze bringen wird (dies basiert rein auf der Logik in Ihrem Komparator).
Dann subList tun? – kosa
Nun, das ist das OP. Selbst wenn er eine Unterliste erstellt, muss er immer noch die Liste durchqueren, um sie zu bekommen. Stattdessen könnte er einfach die sortierte Liste bis zur 3. Position durchlaufen und die Werte erhalten! IMHO, wir sollten diesen Teil dem OP überlassen! – SudoRahul
Wenn ich mir die Frage und die Tags anschaue, denke ich, dass es mehr darum geht, die Liste zu sortieren, als alles andere! – SudoRahul
Verwendung Collections.sort sortieren und die ersten drei Werte
Setzen Sie alle Elemente in einen TreeSet
mit TreeSet(Collection c)
Konstruktor abrufen dann TreeSet.descendingIterator
verwenden, um die ersten drei Elemente zu erhalten. Eine Liste kann Duplikate enthalten, wobei TreeSet-Garantien verwendet werden, um 3 verschiedene größte Werte abzurufen.
List<Integer> list;
Collections.sort(list);
List<Integer> top3 = new ArrayList<Integer>(list.subList(list.size() -3, list.size()));
ich einfach die subList hätte verwendet, aber die Liste zurück von subList() ist eine Ansicht auf der Basisliste, so ändert sich in top3 reflektiert würden gemacht.
Nutzen Sie List#subList(int fromIndex,int toIndex)
Gibt einen Blick auf den Teil dieser Liste zwischen dem angegebenen fromindex einschließlich und toIndex, exklusiv.
yourList.subList(yourList.size() -n, yourList.size());
Wie pro sublist docs
Es hängt von der Größe der Liste und welche Leistung Sie wollen. Wenn die Liste "klein" ist, dann wird jede der früheren Lösungen ausreichen, abhängig von Ihren Anforderungen.
Wenn die Liste "groß" ist und die Leistung wichtig ist, sollten Sie die Liste durchlaufen und die 3 größten beibehalten.
Ein weiterer Kompromiss ist Ihre Zeit und Bugs gegen die Verwendung von Bibliotheken. Einer der genannten Bibliotheksansätze wird in weniger Ihrer Programmierzeit funktionieren als eine benutzerdefinierte Lösung
- 1. Java ArrayList höchsten Wert abrufen
- 2. Finden der größten Werte in SAS (Top 3)
- 3. Wie indexiere ich die 3 höchsten Werte in einer Liste?
- 4. die Indizes der N höchsten Werte in einem ndarray
- 5. finden Zeilen- und Spaltenindex der Top-Werte in einer Matrix
- 6. SQL-select top 3 Werte pro Gruppe MIT BEDINGUNG
- 7. Erhalte die höchsten Werte von einem Array
- 8. Get top "x" Werte der Spalte nach Jahr
- 9. Wie summiere Werte in ArrayList
- 10. Erhalten Sie Top-5-Werte mit Lambda-Abfrage
- 11. Print Wörterbuch Werte am höchsten zum niedrigsten
- 12. Django: Top-Tags erhalten?
- 13. Android die richtigen Werte von einer Arraylist erhalten
- 14. XPath zu erhalten, das Element mit der höchsten ID
- 15. Erhalten Sie 3 höchste Werte von Map <String, String>
- 16. Top 3 Zeilen mit der größten Summe von Spalten in `pandas.DataFrame` erhalten?
- 17. SQL-Abfrage Top 3 Gehälter
- 18. Ermitteln der höchsten 12 kontinuierlichen Werte im Bereich
- 19. Erhalten Median der Werte in verschachtelter Wörterbuch
- 20. Oracle SQL - Abrufen der 5 höchsten Werte einer Spalte
- 21. Schnellste und effizienteste Methode, um Top-3-Nummern zu suchen?
- 22. Anzahl der Maximalwerte von ArrayList Java erhalten
- 23. Java ArrayList: Erhalten Sie eindeutige Werte von ArrayList, die HashMap enthalten
- 24. Widget-Werte in tkinter erhalten
- 25. PHP den Wert der höchsten Dynamik erhalten wählen
- 26. Erhalten der höchsten geraden Zahl aus einem Array
- 27. Scikit Learn TfidfVectorizer: Wie bekomme ich Top n Begriffe mit der höchsten tf-IDF-Punktzahl
- 28. ArrayList in der ArrayList in Java
- 29. Arraylist speichert nur zwei Werte
- 30. Die ArrayList-Werte in TextVitew anzeigen
Aus den Antworten ist klar, dass es zwei Interpretationen Ihrer Frage gibt. Willst du die ersten 3 oder die 3 größten Gegenstände? – andy256