ArrayList an Server uebergeben

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

ich moechte eine ArrayList
Code:
ArrayList<Integer> arrayList = new ArrayList<Integer>()
an einen Server uebergeben.
Ich habe mir so was in die Richtung überlegt:
Code:
Iterator<Integer> iterator = arrayList.iterator();
while(iterator.hasNext() ) {
	      	Object o = iterator.next();
	      	zuEinemServer.println(o);
}

Wer kann mir da weiterhelfen?

Danke
 
Ich verstehe deine Frage nicht - Du hast dich evtl. ein wenig unklar ausgedrückt.
Wo liegt das Problem? Gibt es einen Fehler? Von welchem Typ ist das Objekt "zuEinemServer"?
 
zuEinemServer ist vom Objekt PrintWriter.. Das Problem liegt darin, wie ich das bewerkstelligen kann eine ArrayList an einen Server zu uebergeben.
Was ich geschrieben habe ist mein Gedankengang. Dieses obige Konstrukt bricht mit einer NullPointerException ab in Zeile 2.
 
Kommst du jetzt mit der Frage besser klar, oder ist noch etwas unverständlich?

VG
 
Oder kann mir jemand erklären, wie ich eine ArrayList in der Form [1,2] in 1 2 ausgeben kann?
 
was ist eine ArrayList der Form [1,2]?
enthält sie Integer-Objekte? kommt bei toString() nicht schon ziemlich genau das raus?
ansonsten einen String selber zusammenbauen, [ und ] sind klar,
ansonsten noch Liste durchlaufen und einzelne Elemente nach Belieben formatieren

(edit: ach, du möchtest es ohne Klammern, noch einfacher, durchlaufen mit Iterator oder for-Schleife sollte dennoch sein)

> Dieses obige Konstrukt bricht mit einer NullPointerException ab in Zeile 2.

arrayList ist null, zu testen mit:
System.out.println("liste ist: "+arrayList);
eine Zeile zuvor

---------

mit dem PrintWriter oder einer sonstigen String-Übertragung könnte es klappen,
der Empfänger muss nur schlau genug empfangen und die Liste wieder aufbauen,

denkbar ist evtl ein ObjectOutputStream/ InputStream, welcher diese Aufgabe komplett übernimmt,

bei höheren Protokollen wie RMI kannst du komplett transparent Java-Objekte verschicken,
du verwendest aber Sockets?
 
Hi, Danke für die Antwort.

Ich benutze Sockets für die Verbindung. Werde mir aber die Alternative RMI anschauen.

Die NullPointerException ist mein Fehler. Ich rufe die Array Liste auf bevor sie initialisiert wird. Dazu kurz eine Frage. Da ich den Netzwerk-Client öffne bevor ich die Anwendung starte, kommt die Exception. Nun möchte ich solange warten, bis eine bestimmte Variable gesetzt wird, dann erst möchte ich die ClientConnection initialisieren. Mit welchen Mitteln kann ich das hinbekommen.

Nochmal ein Beispiel (Algorithmus) zum verdeutlichen (in diesem Fall ist die Methode start nicht änderbar, sprich muss ich das ganze in den anderen Programmteilen realisieren. Mein Problem ist halt mit der Methode Verbindung so lange zu warten bis Status auf 1 gesetzt ist..

public void start(){
new Client client = new Client();
new Anwendung anwendung = new Anwendung();
}

class Anwendung{
public Anwendung(){
Array = initialiseren;
int status = 1;
}
}

class Client {
public void verbindung{
wenn status == 1 {
schickeZumServer(array)
}
}
 
sind das denn unterschiedliche Threads?
die können z.B. mit Thread.sleep(milliseconds) warten, die Statusabfrage dürfte klar sein?
 
Gut, ich habe die Klasse Client als Thread realisiert und mit Thread.Sleep eine Verzögerung eingebaut. Aber anscheinend war es das nicht. Aus der Klasse Anwendung wird mir das Array initialisiert ausgegeben.
Der Aufruf aus der Klasse Client auf dieses Array ist defintiv später, bricht aber mit einer NullPointerException ab.
Code:
Konstruktor der Klasse Anwendung
public Anwendung() {
		
		weitereKlasse.ArrayList = new ArrayList<Integer>();
		
		for (int i = 0; i <4; i++) {
			weitereKlasse.ArrayList.add(new Integer(10));
			
		}
		System.out.println(weitereKlasse.ArrayList.toString());
	}
}

Ausgabe [5, 5, 5, 5]

Code:
Run() Methode der Klasse Client:
public void run(){
		try
		{
			while (running)
			{
				Thread.sleep(2000);
				
				System.out.print("Test" + weitereKlasse.ArrayList.toString());
				
			}
		}
		catch (Exception ex){
			System.out.println(ex)
			ex.printStackTrace();
		}
	}
}
Ausgabe:java.lang.NullPointerException

Jemand eine Idee, was ich gerade hier übersehen könnte?
 
nenne nie irgendwas auf der Welt so wie eine bereits vorhandene Java-Klasse wie ArrayList!
alle Variablen sollten sowieso mit kleinem Buchstaben anfangen

aus deinem Code ist nichts erkennbar, weder wer wann wo welche Threads ausführt/ startet,
noch wieso diese Codeteile in irgendeiner Form zusammenhängen, etwa auf das gleiche weitereKlasse-Objekt zugreifen sollten

nichts ist erkennbar, beliebige Fehler denkbar
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben