Erste eindeutige Elemente der Liste
all I have-Liste enthält Doppelte Werte will ich irgendwie, um nur die Eindeutigen Werte aus und speichern Sie es in einer weiteren Liste oder gesetzt werden.Also kann ich die Durchführung einiger Betrieb auf.
Mein code:
{
List<Integer[]> list1 = new ArrayList<Integer[]>();
list1.add(new Integer[] { 1,10 });
list1.add(new Integer[] { 1,10 });
list1.add(new Integer[] { 1,10 });
list1.add(new Integer[] { 2,10 });
list1.add(new Integer[] { 1,10 });
list1.add(new Integer[] { 3,10 });
for(int i=0;i<list1.size();i++)
{
System.out.println("I - 0 :"+list1.get(i)[0]+"\t I - 1 :"+list1.get(i)[1]+"\n");
}
Set<Integer[]> uniquelist = new HashSet<Integer[]>(list1);
for(Integer[] number: uniquelist){
System.out.println(number[0]+"\t"+number[1]);
}
}
Möchte ich das Ergebnis {1,10;2,10;3,10}
werden in separaten Liste.Als ich gegooglet habe ich für die einzigartige, die wir verwenden sollten, wie in Set<Integer[]> uniquelist = new HashSet<Integer[]>(list1);
Aber nach diesem ich weiß nicht, wie man den Zugriff auf die einzelnen Elemente Dank im Voraus
Output:
1 10
2 10
1 10
3 10
1 10
1 10
InformationsquelleAutor HkFreaKuser1673718 | 2013-01-21
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werden Sie nicht bekommen das Ergebnis Sie wollen, mit den normalen
Set
Ansatz. Wie IhrList
enthältInteger[]
, und dann nicht als einmalig betrachtet werden standardmäßig. Alle array-Objekte sind Verschieden. So, IhrSet
enthält die gleichen Elemente wie Ihre Liste. Sie können jedoch festlegen, IhreCustom Comparator
, und verwenden Sie es mit einemTreeSet
Konstruktor.Einen anderen Weg, es zu tun, sein können, definieren Sie eine Methode
contains(List<Integer[]> list, Integer[] value)
, die prüft, ob Ihre Liste enthält das array. Definieren Sie eine Liste mit dem NamenuniqueList
. Jetzt Durchlaufen der ursprünglichen Liste, und dann für jeden Wert, rufen Siecontains
Methode übergebenuniqueList
und dassvalue
als Parameter.Hier erfahren Sie, wie Ihre
contains
Methode würde wie folgt Aussehen: -Also, Sie können sehen, dass, prüfen die Dichtigkeit ist nicht das gleiche wie, wie es Aussehen würde, für nur
Integer
.Nun von deinem
main
Methode, verwenden Sie diesen code: -Vielen Dank @Rohit Jain u Idee gearbeitet
InformationsquelleAutor Rohit Jain
Ich lieber ein
Set
Umsetzung in diesem Fall. VerwendenLinkedHashSet
wenn Sie möchten, dass Ihre Elemente bestellt werden.Könnten Sie deklarieren eine Klasse IntegerPair zu halten Ihre Paare:
Erklären es so:
Anstatt
new Integer[]
Werte, nur tunset.add(new IntegerPair(1, 10));
Können Sie eine Schleife durch die Elemente mit Hilfe des foreach-Ansatz:
Set
Umsetzung nicht funktionieren würde hier. Siehe die Erklärung in meiner Antwort.Recht. Ich "überarbeitet".
Naja, ich mag die Idee, aber es kann fehlschlagen, wenn der integer-array mit mehr als zwei Werten.
danke, aber die Karte.setzen(1,2); Karte.put(1,10); Karte.put(2,2); anzeigen.put(2,10); Karte.put(3,10); geben KMU nur 1-10,2-10,3-10 und 2-2,1-2 fehlt
OK, ich wieder geändert, auf eine Set-basierte Implementierung.
InformationsquelleAutor Dan D.
Können Elemente von
Iterator
oder mit for-each-SchleifeInformationsquelleAutor Jigar Joshi
Setzen Sie Sie in setzen mit Ihrer benutzerdefinierten Komparator wie folgt:
Achten, dass ich
TreeSet
kann akzeptieren benutzerdefinierte Komparator. Es ist, weil Sie den Umgang mit arrays. Wenn Sie jedoch definieren Sie Ihre eigene Klasse, die hält 2 int-Werte, die Sie machen können, es umzusetzenequals()
undhashCode()
, das mit jedem Set-Implementierung.InformationsquelleAutor AlexR
Problem :
Natürlich wird es wieder in der gleichen Art und Weise, in welcher seine Rückkehr, weil set ist..
Aber in Ihrem Fall, den Sie hinzufügen, in der Liste wie ..
Hier
new Integer[] { 1,10 }
jedes mal ein anderes Objekt, so dass seine addition aller Objekte.Lösung :
Einfach die Lösung ist darauf zu achten, dass in der Liste keine doppelten(entsprechend Ihrer Anforderung) Integer-array hinzufügen können.
So erstellen Sie eine Methode, die überprüfen kann, Wetter, wenn das Array ist bereits in der Liste nicht hinzufügen , wenn nicht in der Liste dann hinzufügen.
hinzuzufügen, rufen Sie es wie folgt aus..
InformationsquelleAutor Sumit Singh
den
Integer[] number
in deiner for-Schleife ein array ist. um die Werte im inneren, die Sie haben zu verwendennumber[index]
Unterricht. dafür kann man entweder eine klassische while-oder for-Schleife mit einer variable als indexoder eine foreach-Schleife:
InformationsquelleAutor Cedias
Dies kann helfen, Sie...
Müssen Sie
Comparator
zum vergleichen von zwei Elementen der gleiche. Da wir nicht Komparator für Array, Set verwenden tatsächlichen Objekt zu vergleichen.. mit Komparator Sie zu erzählen haben festgelegt, dass diese zwei arrays sind gleich, und fügen Sie nicht andere dasselbe arrayInformationsquelleAutor nullptr
Versuchen Tabelle Sammlung in Google-guava.
Beispiel :
So wird es überschreiben die doppelten Werte. Schließlich haben Sie nur eindeutige Werte.
InformationsquelleAutor SANN3