Arraylist.contains(Klasse) möglich?

Blakh

Bekanntes Mitglied
Hallo,

habe eine simple Frage, wo ich mit google nicht weitergekommen bin. Ist es möglich zu schauen ob in einer Arraylist verschiedener Objekte eine bestimmte Klasse enthalten ist?

Eclipse meldet zumindestens in dem Editor keinen Fehler:

Java:
eineArrayList.contains(EineKlasse.class)

Kann Programm nicht testen gerade, da noch einige rote Kreuze da sind :oops:.

Grüße :)
 
S

SlaterB

Gast
dann teste doch ein neues separates Programm, das ist sowieso immer besser für Einzelfragen
 
G

Gastredner

Gast
So wir von dir gedacht geht es nicht - du müsstest wenn schon selbst eine Methode schreiben, die über die Liste iteriert und dabei nach Instanzen deiner Klasse sucht:
Java:
public static boolean containsClass(List<?> list, Class<?> clazz) {
	return countClassInstances > 0;
}

public static int countClassInstances(List<?> list, Class<?> clazz) {
	int count = 0;
	for (Object o: list) {
		if (o.getClass().equals(clazz)) {
			count++;
		}
	}
	return count;
}
 
S

SlaterB

Gast
so wie Collections.sort() sollte das für alle Listen gehen, 'gegen das Interface programmieren',
dass das der Objektoriertung im Sinne von 'Methoden in die Klassen' widerspricht, ist gewiss ein offenkundiger Punkt
 

Marco13

Top Contributor
Tendenziell sollte man mit dem Erben ... zurückhaltend sein. Es ist auf jeden Fall NICHT sinnvoll, eine Funktion, die man halt gerade mal braucht, mal kurz in eine Vererbungshierarchie reinzuwursten. Wie genau würde das aussehen?
Code:
class ArrayListWithClassContains<T> extends ArrayList<T>
{
    // hier die contains-methode...
}

Dann noch eine LinkedListWithClassContains, und einen VectorWithClassContains, und eine CopyOnWriteArrayListWithClassContains...? :autsch:

In diesem Fall ist eine statische utility-Methode vieeel universeller:
Java:
public static boolean containsClass(Iterable<?> iterable, Class<?> c)
{
    for (Object object : iterable)
    {
        if (object.getClass().equals(c))
        {
            return true;
        }
    }
    return false;
}
Das funktioniert (wenn man es getestet hat, was ich jetzt nicht habe :oops: ) überall und immer, mit ArrayList, LinkedList, Set oder sonstwas, und man schleppt nicht überall seine ganz spezielle "ListWithClassContains"-Klasse mit sich rum.

Die Frage: http://www.java-forum.org/allgemein...embermethoden-statische-utility-methoden.html ist aber schon ganz interessant...
 

Blakh

Bekanntes Mitglied
Werds mir morgen mal zu gemüte führen. Wieso ich das amchen will? Naja ich möchtevon einem anderen Thread was erzeugt haben. Dies sind unterschiedliche Klassen, je nachdem was für eine Nachricht ich erhalten habe, muss eine entsprechende Klasse gebildet werden. Diese sind alles extended Klassen einer einzigen und ich möchte dann vom Verbraucher-Thread nach einer bestimmten Klasse darin suchen, möglichst schnell.
 

Blakh

Bekanntes Mitglied
Ok nochmal, wie du anhand meiner anderen Threads im Forum bemerkt hast, baue ich einen kleinen Client. Es handelt sich um ein Client zum Senden und Empfangen von Voice per RTP und parallel ASN1 Nachrichten, welche für das Signaling zuständig sind. Wenn ich jetzt z.B. einen Call machen möchte, dann sende ich eine bestimmte ASN1 Nachricht und muss auf eine bestimmte Antwort warten (jede Nachricht ist eine eigene Klasse z.B. ASN1CallStart extended von der Klasse ASN1Typ). Solang geht der Callhandler-Thread in den Wartezustand für eine maximale Zeit bis er abbricht. Ich habe ein Listener, welcher auf einem Port lauscht und die Nachrichten anhand der Tags verteilt und diese eben in eine Liste vom CallHandler schiebt und diesen weckt oder einen neuen CallHandle-Thread startet. Es kann aber jederzeit vorkommen, dass der Server eine andere Nachricht z.B. ASN1CallIncoming sendet, wo der CallHandler auch gefragt ist. Ich dachte, dass eine Liste besser ist als für jede Klasse eine extra Liste zu machen, da es durchaus viele verschiedene Klassen sind.

Das mit dem Call ist nur ein Beispiel. Gibt noch andere Sachen wie Connection-Status etc.
 
Zuletzt bearbeitet:

Blakh

Bekanntes Mitglied
Die Basisklasse ist Teil einer Library. Da kann ich nicht ran. Jemand eine Idee wie ich dem Handler die Nachrichten-Klassen am Besten übergebe? Die Nachrichten sind alle anhand ihrer ASN1 Tags identifizierbar.
 
Zuletzt bearbeitet:

Blakh

Bekanntes Mitglied
Nachdem der Thread nach einer maximalen Zeit aufgewacht ist, muss er ja schauen ob die benötigte Antwort eingetroffen ist und mit der Klasse weiter hantieren. Da stehe ich eben auf dem Schlauch.

Ich poste mal den Code... bin da noch am rumschrauben. Hoffe, dass das mit dem synchronized so stimmt, wie ich es verstanden habe ;). Die Listener-Klasse ist auch in Arbeit und wird noch umbenannt, da dort über diese auch das Senden berwerkstelligt wird.

Java:
private static ArrayList<ASN1Type> inCmd;


public static String connect() {

    ...

    Listener.getInstance().sendCommand(new ATClientCreate(client.getClientId()
				.getBytes()).getTagged());

		
    synchronized( inCmd ) 
    { 
        try { 
            inCmd.wait(3000); 
            // Habe gewartet, kann jetzt loslegen. 
        } catch ( InterruptedException e ) { 
            ....
        } 

         if ( inCmd.isEmpty() || !inCmd.contains(ATClientAuthRequest.class)) { // <-- Hier die Stelle
				//TODO : Fehlermeldung schön machen
			
            result = "Failed to make the connection bla!";
            return result;
				
        } else  {
            ... nächste Nachricht ....
        }
    ...
    }
}
 
Zuletzt bearbeitet:

Michael...

Top Contributor
So ganz habe ich das Konzept noch nicht verstanden. Hast Du da so eine Art Nachrichtenqueue?
Kann man für solche "kritischen" Antworten nicht eine eigene Liste/ Queue verwenden oder einen Marker setzten, an dem der Thread erkennt, ob die Antwort eingegangen ist?
 
G

Gelöschtes Mitglied 5909

Gast
Nicht aufgeben, das ist der einfachste weg. Überleg dir lieber genauer wie du das Design machst. Nicht immer gleich anfangen zu coden :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H ArrayList.contains() Allgemeine Java-Themen 2
M ArrayList oder LinkedList Allgemeine Java-Themen 10
C Sortieren und Selektieren einer ArrayList<Point3D> Allgemeine Java-Themen 6
A Einzelne Objekte und Unterobjekte einer ArrayList ausgeben Allgemeine Java-Themen 53
T Remove bei ArrayList funktioniert nicht Allgemeine Java-Themen 2
B Type mismatch: cannot convert from Graph.Edge to ArrayList<Graph.Edge> Allgemeine Java-Themen 21
R ArrayList Allgemeine Java-Themen 4
G jToggleButton in Array/ArrayList Allgemeine Java-Themen 12
J ArrayList, ganze Zeilen löschen oder überspringen Allgemeine Java-Themen 4
L ArrayList sortieren Allgemeine Java-Themen 2
C ArrayList Problem Allgemeine Java-Themen 3
O Datentypen Wie kann ich den Typ einer ArrayList abfragen ? Allgemeine Java-Themen 7
S Best Practices CopyConstrutor mit ArrayList Allgemeine Java-Themen 1
S ArrayList Design Allgemeine Java-Themen 4
S Array dynamisieren oder ArrayList verwenden? Allgemeine Java-Themen 17
L ArrayList mit String Arrays in ein Array umwandeln Allgemeine Java-Themen 1
H Elemente aus ArrayList in Array speichern Allgemeine Java-Themen 8
MiMa Person in einer Arraylist hinzugügen mit Prüfung ? Allgemeine Java-Themen 6
X Adjazenzliste ohne ArrayList Allgemeine Java-Themen 6
X Output von ArrayList Allgemeine Java-Themen 3
H Stream in ArrayList umwandeln Allgemeine Java-Themen 2
H Mehrere Datentypen in einer Arraylist speichern Allgemeine Java-Themen 9
H Arraylist mit anderer ArrayList überschreiben Allgemeine Java-Themen 17
MiMa ArrayList sortieren?? Allgemeine Java-Themen 5
Curtis_MC Pointer mit ArrayList vergleichen Allgemeine Java-Themen 6
F ArrayList`s in Klassen mit Getter/Setter Allgemeine Java-Themen 8
W Array vs. ArrayList vs. HashMap Allgemeine Java-Themen 20
F Arraylist vollständig abspeichern und laden Allgemeine Java-Themen 1
R Arraylist in andere Klasse leiten und bearbeiten Allgemeine Java-Themen 10
D ArrayList Indexlänge ändern Allgemeine Java-Themen 2
E Elemente innerhalb einer ArrayList vergleichen Allgemeine Java-Themen 33
K ursprüngliche ArrayList ändert sich bei Übergabe in Methode Allgemeine Java-Themen 18
N Mehrdimensionale ArrayList mischen Allgemeine Java-Themen 10
S JTable - mehrere ausgewählte Rows in ArrayList Allgemeine Java-Themen 5
MiMa Date aus einer ArrayList<Date> holen ?? Allgemeine Java-Themen 5
MiMa ArrayList Rückgabewerte aus einer Funktion Allgemeine Java-Themen 15
L CSV File lesen, in ArrayList speichern und ausgeben Allgemeine Java-Themen 3
M Was geschieht mit Java-Klasse, die aus ArrayList entfernt wird? Allgemeine Java-Themen 10
M Methoden Generische Methode für ArrayList Allgemeine Java-Themen 7
T Collections ArrayList Sortieren Allgemeine Java-Themen 4
P GUI: ArrayList anzeigen funktioniert nicht Allgemeine Java-Themen 5
H ArrayList: Leere Elemente finden? Allgemeine Java-Themen 2
GreenTeaYT Verständnisprobleme zur Arraylist Allgemeine Java-Themen 1
T Methoden Methode zum durchsuchen einer ArrayList Allgemeine Java-Themen 8
K ArrayList sortieren Allgemeine Java-Themen 16
A Bestimmte Inhalte aus ArrayList 1 in ArrayList 2 kopieren Allgemeine Java-Themen 6
S Mehrdimensionales ArrayList ins HashSet Allgemeine Java-Themen 10
C ArrayList Allgemeine Java-Themen 8
Streeber Probleme mit AWT-EventQueue: ArrayList Elemente hinzufügen Allgemeine Java-Themen 1
F Methoden Arraylist weiterverwenden nach methoden Aufruf Allgemeine Java-Themen 2
Z NullPointerException beim Schreiben einer ArrayList in eine Datei Allgemeine Java-Themen 6
L Von ArrayList abgeleitete Klasse nur mit bestimmten Objekten füllen Allgemeine Java-Themen 1
K Array in ArrayList Allgemeine Java-Themen 16
Paul15 2D Arraylist in Jtable Allgemeine Java-Themen 1
Paul15 Arraylist 2D Allgemeine Java-Themen 8
B ArrayList in ein Objekt legen Allgemeine Java-Themen 1
Neumi5694 Datentypen ArrayList vs TreeMap Allgemeine Java-Themen 6
F ArrayList Allgemeine Java-Themen 11
X ArrayList will nicht so wie ich will. Hilfe Allgemeine Java-Themen 8
N ArrayList in eigenem Object nicht richtig serialisierbar Allgemeine Java-Themen 14
M ArrayList mit verschiedenen Datentypen in String konvertieren Allgemeine Java-Themen 10
Z Elemente einer ArrayList von rechts wegnehmen Allgemeine Java-Themen 5
W Arraylist Text Suchen und Datei löschen Allgemeine Java-Themen 5
R ArrayList und HashMap Allgemeine Java-Themen 7
T ArrayList zeilenumbruch entfernen Allgemeine Java-Themen 13
D Arraylist/For Schleife/Scanner Allgemeine Java-Themen 30
E ArrayList Anzahl der gleichen Elemente Allgemeine Java-Themen 4
Doopy ArrayList plötzlich leer Allgemeine Java-Themen 2
D Arraylist eigener Klasse an iReport übergeben Allgemeine Java-Themen 7
L ArrayList Inhaltstyp. Allgemeine Java-Themen 5
Z Klassen ArrayList selbst machen Allgemeine Java-Themen 5
J Arraylist speichern und laden? Allgemeine Java-Themen 5
C Generics Objekt in ArrayList Allgemeine Java-Themen 2
D ArrayList index auf gültigkeit prüfen Allgemeine Java-Themen 12
M ArrayList<String> Frage Allgemeine Java-Themen 7
O ArrayList kaputt?! Allgemeine Java-Themen 5
M ArrayList<Foo> in ein Foo[] konvertieren? Allgemeine Java-Themen 8
Bananabert Abstract ArrayList Allgemeine Java-Themen 4
A Collections Array-Elemente in ArrayList kopieren ohne Schleife Allgemeine Java-Themen 7
O ArrayList - Serialisierungs-Problem Allgemeine Java-Themen 11
M JTable + ArrayList Allgemeine Java-Themen 3
M Datentypen ArrayList in Integer konvertieren Allgemeine Java-Themen 3
O Collections ListIterator gibt Inhalt von ArrayList nicht aus Allgemeine Java-Themen 3
Madlip Variablen 3 Werte aus ArrayList und weiter ... Allgemeine Java-Themen 4
S arraylist nach n. Eintrag numerisch Sortiren Allgemeine Java-Themen 5
O Problem beim Auslesen einer Arraylist von JComboBoxen Allgemeine Java-Themen 2
R Threads korrekte Synchronisation bei Vector und ArrayList Allgemeine Java-Themen 6
M Kovariante Rückgabewerte mit ArrayList Allgemeine Java-Themen 3
H LinkedList<LinkedList<String>> nach ArrayList<ArrayList<String>> ? Allgemeine Java-Themen 9
E NetBeans Vector durch ArrayList ersetzen Allgemeine Java-Themen 4
Maxim6394 Problem mit ArrayList Allgemeine Java-Themen 5
E Berechnung in Arraylist Allgemeine Java-Themen 10
E ArrayList mit unbekannter Größe Allgemeine Java-Themen 8
V Fork Join bei Arraylist Allgemeine Java-Themen 6
H Fehler in Arraylist Allgemeine Java-Themen 2
S Datensätze in eine ArrayList<Movie> speichern Allgemeine Java-Themen 13
S Alle Kombinationen aus ArrayList - Potenzmenge Allgemeine Java-Themen 7
V ArrayList vergleichen mit .equals? Allgemeine Java-Themen 13
J ArrayList-Problem Allgemeine Java-Themen 16
S Von einer ArrayList in die andere schreiben? Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben