java-forum.org - Java programmieren aus Leidenschaft
Java 6 Einstieg und professioneller Einsatz
Alter Preis: 34,90 EUR
Jetzt: 0,00 EUR

zzgl. Versandkosten

Zurück   java-forum.org - Java programmieren aus Leidenschaft > Java - Programmierung > Allgemeine Java-Themen

Allgemeine Java-Themen Allgemeine Themen, die nicht in andere Fachforen und nicht zu den Java Basics passen

Antwort    
Themen-Optionen Thema durchsuchen Ansicht
Alt 20.07.2012, 14:06   #1 (permalink)
_________
Nicht angemeldet
 
Fachbeiträge: n/a
Standard Objects aus List aussortieren

Hallo,

ich habe verschiedene Funktionen, die jeweils eine ArrayList returnen. Ich möchte daraus eine einzelne ArrayList erstellen, die nur Objekte enthält, die in allen Listen vorkommen. Wie würdet ihr das am elegantesten lösen? Ich kann den Code dazu schreiben, mir fällt nur keine effiziente Methode ein.

LG
 
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 20.07.2012, 14:09   #2 (permalink)
Stammbenutzer
Viertel Gigabyte
 
Registriert seit: 26.07.2011
Fachbeiträge: 2.886
Abgegebene Danke: 76
Erhielt 600 Danke für 590 Beiträge
Schau Dir mal die Methode retainAll() an. Die macht genau das: List#retainAll
__________________
http://www.winfonet.eu
nillehammer ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 20.07.2012, 14:10   #3 (permalink)
Stammbenutzer
Halbes Megabyte
 
Registriert seit: 17.11.2010
Fachbeiträge: 592
Abgegebene Danke: 4
Erhielt 136 Danke für 134 Beiträge
Nutz doch einfach List.retainAll(Collection c). wozu das Rad neu erfinden wenn's schon ne Methode dafür gibt
Kevin94 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 20.07.2012, 17:46   #4 (permalink)
_________
Nicht angemeldet
 
Fachbeiträge: n/a
Also praktisch folgender Code?

Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
List[] listen = alle Listen einlesen
for(List l : listen){
  for(Object o : l){
    if(!hauptliste.contains(o))
      hauptliste.add(o);
  }
}
for(List l : listen){
  hauptliste.retainAll(listen);
}
 
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 20.07.2012, 21:24   #5 (permalink)
Stammbenutzer
Halbes Megabyte
 
Registriert seit: 17.11.2010
Fachbeiträge: 592
Abgegebene Danke: 4
Erhielt 136 Danke für 134 Beiträge
geht auch einfacher:

Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
List[] listen = alle Listen einlesen
List hauptliste=listen[0];
for(int i=1;i<listen.length;i++){
  hauptliste.retainAll(listen[i]);
}
Kevin94 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 23.07.2012, 19:21   #6 (permalink)
_________
Nicht angemeldet
 
Fachbeiträge: n/a
Zitat: Kevin94
Beitrag anzeigen
Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
List[] listen = alle Listen einlesen
List hauptliste=listen[0];
for(int i=1;i<listen.length;i++){
  hauptliste.retainAll(listen[i]);
}
Das setzt aber vorraus, dass die hauptliste (listen[0]) bereits alle Elemente beinhaltet, oder?
 
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 23.07.2012, 19:51   #7 (permalink)
Stammbenutzer
Halbes Megabyte
 
Registriert seit: 25.12.2009
Fachbeiträge: 529
Abgegebene Danke: 22
Erhielt 89 Danke für 82 Beiträge
Stimmt, das setzt es voraus.
Du kannst folgendes machen (weiß jedoch nicht, ob das die praktischste Lösung ist wegen O(n))
Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
List<List<T>> allLists = getAllLists(); 
List<T> retainedList = new XYZList<T>(); //ArrayList oder was auch immer.
for(List<T> list : allLists)
    retainedList.addAll(list);
for(List<T> list : allLists)
    retainedList.retainAll(list);
Mujahiddin ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 23.07.2012, 20:48   #8 (permalink)
Stammbenutzer
Floppy Disc
 
Benutzerbild von xehpuk
 
Registriert seit: 24.10.2010
Fachbeiträge: 967
Abgegebene Danke: 20
Erhielt 194 Danke für 190 Beiträge
Zitat: _________
Beitrag anzeigen
Das setzt aber vorraus, dass die hauptliste (listen[0]) bereits alle Elemente beinhaltet, oder?
Jede Liste beinhaltet alle Elemente, die beim Schnitt der Listen übrig bleiben. Der Code war schon okay so.
xehpuk ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 23.07.2012, 20:52   #9 (permalink)
Stammbenutzer
Halbes Megabyte
 
Registriert seit: 25.12.2009
Fachbeiträge: 529
Abgegebene Danke: 22
Erhielt 89 Danke für 82 Beiträge
Stimmt. Mein Fehler, meinen Code nicht nehmen!
Mujahiddin ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 23.07.2012, 22:22   #10 (permalink)
Java-Forum Team
Moderator
 
Registriert seit: 06.01.2007
Fachbeiträge: 16.772
Abgegebene Danke: 0
Erhielt 1.642 Danke für 1.487 Beiträge
Man sollte in Erwägung ziehen, dort ein Set zu verwenden, um das "contains" auf der Liste zu sparen. Welche von beiden man zur Set machen muss, müßte ich jetzt aber auch erst nachsehen ...
Marco13 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Antwort    

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Applet für Binärbaum lalala9 Hausaufgaben 1 14.06.2012 10:11
Stack mit listen rekursive implementieren kurtisblow Hausaufgaben 15 03.04.2012 18:46
XML in Jtree bearbeiten Mario170783 XML und Co. 2 08.09.2010 11:14
Exception javax.naming.CommunicationException Gast Netzwerkprogrammierung 16 04.12.2008 09:50
dynamic arrays/ performance Schüler Java Basics - Anfänger-Themen 2 15.05.2007 13:30


Lesezeichen

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 Uhr.


Powered by vBulletin® Version 3.8.6 (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Thanks for Smilies by smilies.4-user.de