ArrayListe

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
hallöchen,

kann ich eine Arrayliste speichern damit ich sie nach Programmende beim nächstenmal wieder laden kann?
vielen dank im vorraus
 

RBS2002

Aktives Mitglied
ja, wenn du ihr ein model gibst und mit diesem model dann Einträge nach der Startdefinition Werde gibst, z.B. mit

final static model a=new model(); //als Definition

liste.setModel(a);

dies im Implementierungscode

Nacher z.B.:

((DefaultListmodel)liste.getModel()).addElement(String)
 
G

Guest

Gast
cool danke für den link. ist aber RBS2002 antwort völlig falsch?
 

RBS2002

Aktives Mitglied
nicht das ich wüsste, mache es aer selber so - habe den Code aber aus den Kopf aufgeschrieben, deshalb kann es sein das er nicht 100%-ig stimmt (der Link behandelt im Prinzip die Theorie des ganzen)
 
G

Guest

Gast
sry wenn ich frage (mach das zum erstenmal so "serialisierung" aber wo speicher ich das denn? hab hier ein quelltext der die serialisierung von arraylisten handeln soll:
Code:
	private void writeObject(ObjectOutputStream s) throws IOException 
	{ 
	    // The 'size' field. 
	  s.defaultWriteObject(); 
	  // We serialize unused list entries to preserve capacity. 
	  int len = data.length; 
	  s.writeInt(len); 
	  // it would be more efficient to just write "size" items, 
	  // this need readObject read 'size' items too. 
	  for (int i = 0; i < size; i++) 
	    s.writeObject(data[i]); 
	} 
	private void readObject(ObjectInputStream s) 
	  throws IOException, ClassNotFoundException 
	{ 
	  // the 'size' field. 
	  s.defaultReadObject(); 
	  int capacity = s.readInt(); 
	  data = new Object[capacity]; 
	  for (int i = 0; i < size; i++) 
	    data[i] = s.readObject(); 
	}
jedoch wenn ich da meine werte eintrage spinnt das total :(
 

NTB

Bekanntes Mitglied
Anonymous hat gesagt.:
cool danke für den link. ist aber RBS2002 antwort völlig falsch?

Wenn ich da was zu sagen darf: Keine Ahnung, was RBS2002 da blubbert, wovon er redet.
Es hat aber nichts wirklich mit Deiner Fragestellung zu tun, denn die deutete sehr deutlich auf die Serialisierung :)


/Edit: Was ist genau Deine Frage?
 
G

Guest

Gast
ok, also kann ich mit seiner antwort so nix anfangen?

naja komm ja selbst auch nicht weiter bei meinem projekt nun hab ich ein:

Exception in thread "main" java.lang.NullPointerException
at java.io.ByteArrayInputStream.<init>(Unknown Source)
at Test.Testprogramm.deserializeFromString(Testprogramm.java:31)
at Test.Textfeld.main(Textfeld.java:122)

Fehler :(
 

BarFooß

Mitglied
NTB hat gesagt.:
Wenn ich da was zu sagen darf: Keine Ahnung, was RBS2002 da blubbert, wovon er redet.
Was auch immer das ist - er redet keinesfalls von ArrayList. Ich tippe eher auf JList, dadurch bekommt das zumindest etwas Sinn, wenn auch nicht in Zusammenhang mit dem Threadthema.

mach das zum erstenmal so "serialisierung" aber wo speicher ich das denn?
Habe ich bisher ehrlich gesagt noch nie gemacht, aber i. A. können Streams ineinander gekapselt werden. Hier also ObjectXXStream + FileXXStream.
http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html hat gesagt.:
For example to write an object that can be read by the example in ObjectInputStream:

Code:
FileOutputStream fos = new FileOutputStream("t.tmp");
        ObjectOutputStream oos = new ObjectOutputStream(fos);

        oos.writeInt(12345);
        oos.writeObject("Today");
        oos.writeObject(new Date());

        oos.close();
Entsprechendes gilt für das Einlesen.
 
G

Guest

Gast
sry hier ist mein Quellcode:

Code:
package Test;

import java.awt.*;
import java.awt.event.*;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;

import javax.swing.*;

import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;

import Test.Fenster_schließen;

public class Textfeld extends JFrame implements ActionListener {
	static String input;
	public JTextField tf;
	static int anzahl = 2;
	static ArrayList<String> labelliste = new ArrayList<String>(anzahl);
	JButton[] lb = new JButton[anzahl];

	public Textfeld() {
		super("JTextField");
		addWindowListener(new Fenster_schließen(true));
		Container cp = getContentPane();
		cp.setLayout(new FlowLayout());

		tf = new JTextField("Test", 20);
		tf.addActionListener(this);
		cp.add(tf);
		for (int i = 0; i < anzahl; ++i) {
			lb[i] = new JButton();
			lb[i].setBounds(10, 10 + (i * 50), 120, 20);
			lb[i].addActionListener(this);
			cp.add(lb[i]);

		}
		lb[0].setText("Einfügen");
		lb[1].setText("Anzeigen");
	}

	public String serializeToString(ArrayList<String> original)
			throws IOException, ClassNotFoundException {

		ByteArrayOutputStream out = new ByteArrayOutputStream();
		ObjectOutputStream oos = new ObjectOutputStream(out);
		oos.writeObject(original);
		oos.close();
		out.close();

		// String ausgeben
		String output = Base64.encode(out.toByteArray());

		return output;
	}

	public String deserializeFromString(String serializedObject)
			throws IOException, ClassNotFoundException {

		byte[] pick = Base64.decode(serializedObject);
		InputStream in = new ByteArrayInputStream(pick);
		ObjectInputStream ois = new ObjectInputStream(in);
		String deserializedObject = (String) ois.readObject();
		ois.close();
		in.close();

		return deserializedObject;
	}

	public void actionPerformed(ActionEvent event) {
		String cmd = event.getActionCommand();
		if (cmd.equals("Einfügen")) {
			labelliste.add(tf.getText());
			System.out.println(tf.getText()
					+ " wurde in die Labelliste eingefügt! ");
		} else if (cmd.equals("Anzeigen")) {
			System.out.println("Es befinden sich: " + labelliste
					+ " in der Labelliste!");
		} else {
			System.out.println("---ActionEvent---");
			System.out.println(tf.getText());
			labelliste.add(tf.getText());
			System.out.println(tf.getText() + " ist nun in der Lablliste! ");
		}
	}

	public static void main(String[] args) throws IOException,
			ClassNotFoundException {

		Textfeld frame = new Textfeld();
		frame.setLocation(100, 100);
		frame.setSize(300, 150);
		frame.setVisible(true);
		Textfeld app = new Textfeld();

		// construct test object
		ArrayList<String> original = new ArrayList<String>(labelliste);

		// serialize
		String output = app.serializeToString(original);
		System.out.println(output);
		// deserialize
		String des = app.deserializeFromString(output);

		// test
		System.out.println(des.toString());
	}

}
 
G

Guest

Gast
juhuuu^^ ich hab es geschafft das er mir keine fehlermeldung mehr bring jedoch zeigt er am anfang immer nur ein leere ArrayList :( (hab es jedoch bald geschafft :) )


Code:
package Test;

import java.awt.*;
import java.awt.event.*;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;

import javax.swing.*;

import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;

import Test.Fenster_schließen;

public class Textfeld extends JFrame implements ActionListener {
	static String input;
	public JTextField tf;
	static int anzahl = 2;
	static ArrayList<String> labelliste = new ArrayList<String>(anzahl);
	JButton[] lb = new JButton[anzahl];

	public Textfeld() {
		super("JTextField");
		addWindowListener(new Fenster_schließen(true));
		Container cp = getContentPane();
		cp.setLayout(new FlowLayout());

		tf = new JTextField("Test", 20);
		tf.addActionListener(this);
		cp.add(tf);
		for (int i = 0; i < anzahl; ++i) {
			lb[i] = new JButton();
			lb[i].setBounds(10, 10 + (i * 50), 120, 20);
			lb[i].addActionListener(this);
			cp.add(lb[i]);

		}
		lb[0].setText("Einfügen");
		lb[1].setText("Anzeigen");
	}

	public String serializeToString(ArrayList<String> original)
			throws IOException, ClassNotFoundException {

		ByteArrayOutputStream out = new ByteArrayOutputStream();
		ObjectOutputStream oos = new ObjectOutputStream(out);
		oos.writeObject(original);
		oos.close();
		out.close();

		// String ausgeben
		String output = Base64.encode(out.toByteArray());

		return output;
	}

	public ArrayList<String> deserializeFromString(String serializedObject)
			throws IOException, ClassNotFoundException {

		byte[] pick = Base64.decode(serializedObject);
		InputStream in = new ByteArrayInputStream(pick);
		ObjectInputStream ois = new ObjectInputStream(in);
		ArrayList<String> deserializedObject = (ArrayList<String>) ois.readObject();
		ois.close();
		in.close();

		return deserializedObject;
	}

	public void actionPerformed(ActionEvent event) {
		String cmd = event.getActionCommand();
		if (cmd.equals("Einfügen")) {
			labelliste.add(tf.getText());
			System.out.println(tf.getText()
					+ " wurde in die Labelliste eingefügt! ");
		} else if (cmd.equals("Anzeigen")) {
			System.out.println("Es befinden sich: " + labelliste
					+ " in der Labelliste!");
		} else {
			System.out.println("---ActionEvent---");
			System.out.println(tf.getText());
			labelliste.add(tf.getText());
			System.out.println(tf.getText() + " ist nun in der Lablliste! ");
		}
	}

	public static void main(String[] args) throws IOException,
			ClassNotFoundException {

		Textfeld frame = new Textfeld();
		frame.setLocation(100, 100);
		frame.setSize(300, 150);
		frame.setVisible(true);
		Textfeld app = new Textfeld();

		// construct test object
		ArrayList<String> original = new ArrayList<String>(labelliste);

		// serialize
		String output = app.serializeToString(original);
		// deserialize
		ArrayList<String> des = app.deserializeFromString(output);

		// test
		System.out.println(des);
	}

}
 

RBS2002

Aktives Mitglied
NTB hat gesagt.:
Anonymous hat gesagt.:
cool danke für den link. ist aber RBS2002 antwort völlig falsch?

Wenn ich da was zu sagen darf: Keine Ahnung, was RBS2002 da blubbert, wovon er redet.
Es hat aber nichts wirklich mit Deiner Fragestellung zu tun, denn die deutete sehr deutlich auf die Serialisierung :)


/Edit: Was ist genau Deine Frage?

ok, ich habe nur List gelesen und dann drauf los geschrieben (wollte auch mal helfen :lol: ). Meinte natürlich die JList Naja, schön das es geht.
 

NTB

Bekanntes Mitglied
Wenn Du etwas neues probierst, ist es immer besser, nicht so viel Klimbims drum herum zu haben, sondern das Programm nur auf das Nötigste herunterzubrechen. Damit gehst Du Fehlern aus dem Weg, die vielleicht nur wegen des Klimbims entstehen.
Klimbims ist in diesem Fall Dein Fenster.
Es wird eine leere ArrayList angezeigt, weil...
...sie leer ist!

Code:
   static int anzahl = 2;
   static ArrayList<String> labelliste = new ArrayList<String>(anzahl);

 // viel code... 

      ArrayList<String> original = new ArrayList<String>(labelliste);

      // serialize
      String output = app.serializeToString(original);
      // deserialize
      ArrayList<String> des = app.deserializeFromString(output);

Du erzeugst erst Deine Labelliste. Die ist nach der Erzeugung erstmal leer.
Dann erzeugst Du unten nochmal eine Liste, die Du original nennst, ihr aber (die leere) labelliste übergibst. Warum doppelt gemoppelt?
Naja, diese immer noch leere original serialisierst Du und deserialisierst sie anschliessend. Und die deserialisierte Liste ist immer noch leer.

Lass doch erstmal das Fenster weg und fülle eine ArrayList mit ein paar Strings. Und die (de)serialisierst Du dann zum testen und schaust, ob es funktioniert.

Weiterhin erzeugst Du erst ein Objekt "frame" und machst es visible. Dann erzeugst Du aber noch ein Objekt und benutzt das dann zum serialisieren.

Alles in allem ziemlich durcheinander. Ich empfehle Dir, Dein Javabuch wieder in die Hand zu nehmen und nochmal ein paar Kapitel zurückzugehen...
 
G

Guest

Gast
ich hab es gelöst falls es jemand interessiert:
Code:
public class Textfeld extends JFrame implements ActionListener {
	static String input;

	public JTextField tf;

	static int anzahl = 2;

	static ArrayList<String> labelliste = new ArrayList<String>(anzahl);

	JButton[] lb = new JButton[anzahl];

	// Name der Speicherdatei 
	private static String datnam = "Testdatei.=)";

	public Textfeld() {
		super("JTextField");
		addWindowListener(new Fenster_schließen(true));
		Container cp = getContentPane();
		cp.setLayout(new FlowLayout());

		tf = new JTextField("Test", 20);
		tf.addActionListener(this);
		cp.add(tf);
		for (int i = 0; i < anzahl; ++i) {
			lb[i] = new JButton();
			lb[i].setBounds(10, 10 + (i * 50), 120, 20);
			lb[i].addActionListener(this);
			cp.add(lb[i]);

		}
		lb[0].setText("Einfügen");
		lb[1].setText("Anzeigen");
	}

	public void actionPerformed(ActionEvent event) {
		String cmd = event.getActionCommand();
		if (cmd.equals("Einfügen")) {
			labelliste.add(tf.getText());
			System.out.println(tf.getText()
					+ " wurde in die Labelliste eingefügt! ");
			schreiben();
		} else if (cmd.equals("Anzeigen")) {
			System.out.println("Es befinden sich: " + labelliste
					+ " in der Labelliste!");
		} else {
			System.out.println("---ActionEvent---");
			System.out.println(tf.getText());
			labelliste.add(tf.getText());
			System.out.println(tf.getText() + " ist nun in der Lablliste! ");
			schreiben();
		}
		System.out.println("Labelliste: " + labelliste);
	}

	public static void main(String[] args) throws IOException,
			ClassNotFoundException {

		Textfeld frame = new Textfeld();
		frame.setLocation(100, 100);
		frame.setSize(300, 150);
		frame.setVisible(true);

		// Speicherdatei in eine ArrayList einlesen bzw. prüfen: 
		try {
			ObjectInputStream in = new ObjectInputStream(new FileInputStream(
					datnam));
			labelliste = (ArrayList<String>) in.readObject();
			System.out.println("Am Anfang ist: " + labelliste);
			in.close();
		} catch (FileNotFoundException ex) {
			System.out.println("Speichersdatei (noch) nicht vorhanden!");
		} catch (Exception ex) {
			System.out.println(ex);
		}
	}

	public void schreiben() {
		try {
			ObjectOutputStream aus = new ObjectOutputStream(
					new FileOutputStream(datnam));
			aus.writeObject(labelliste);
			aus.flush();
			aus.close();
		} catch (IOException ex) {
			System.out.println(ex);
		}
	}
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
G Bei dynamischer Arrayliste nach jeder Auswahl Zahl entfernen Java Basics - Anfänger-Themen 3
M Arrayliste mit beliebig vielen Namen befüllen Java Basics - Anfänger-Themen 4
Poppigescorn Arrayliste Mittels Scanner erweitern Java Basics - Anfänger-Themen 6
Poppigescorn Mithilfe einer Arrayliste einen Notenspiegel ausgeben Java Basics - Anfänger-Themen 12
A Objekt in Arrayliste Java Basics - Anfänger-Themen 2
L Arrayliste von hinten nach vorne ausgeben Java Basics - Anfänger-Themen 10
X Methode kann auf ArrayListe nicht zugreifen! Java Basics - Anfänger-Themen 10
F ArrayListe manuell programmieren? Java Basics - Anfänger-Themen 24
S Daten aus zwei Verschiedenen Tabellen in eine ArrayListe Java Basics - Anfänger-Themen 4
J Best Practice [Code Verbesserung] TXT einlesen und in Arrayliste speichern Java Basics - Anfänger-Themen 5
S ArrayListe in einer JComboBox anzeigen Java Basics - Anfänger-Themen 10
R Eine Arrayliste in XML abspeichern und laden können Java Basics - Anfänger-Themen 7
P Klasse in Klasse einfügen (arrayliste) Java Basics - Anfänger-Themen 7
O ArrayListe sortieren anhand zweier Parameter Java Basics - Anfänger-Themen 4
A ArrayListe ist nur lokal vorhanden Java Basics - Anfänger-Themen 5
L Input/Output Sortieren Speichern Laden von ArrayListe Java Basics - Anfänger-Themen 14
B ArrayListe in Arraylist Problem Java Basics - Anfänger-Themen 3
N Kopieren einer ArrayListe Java Basics - Anfänger-Themen 3
S ArrayListe??? Java Basics - Anfänger-Themen 2
J Arrayliste in RandomAccesFile speichern Java Basics - Anfänger-Themen 7
D komplizierte Arrayliste sortieren Java Basics - Anfänger-Themen 17
J Arrayliste (gefüllte mit arrays) nach datum sortieren Java Basics - Anfänger-Themen 3
W ArrayListe , Wo ist mein Fehler? Java Basics - Anfänger-Themen 6
K ArrayListe erstellen mit vielen (unendlichen) Weren ??? Java Basics - Anfänger-Themen 29
B Aufgabe: Arrayliste ausgeben, stimmt es so? Java Basics - Anfänger-Themen 8
G Arrayliste mit Objekt anhand von Strings sortieren Java Basics - Anfänger-Themen 8
G ArrayListe vom Server nach Client schicken Java Basics - Anfänger-Themen 17
C ArrayListe ->liste.get Java Basics - Anfänger-Themen 13
ChaosNo1 Arrayliste global nutzen? Java Basics - Anfänger-Themen 4
C Elemente aus Arrayliste ausgeben Java Basics - Anfänger-Themen 6
S Arrayliste füllen Java Basics - Anfänger-Themen 4
O ArrayListe mit Objekten Java Basics - Anfänger-Themen 2
B ArrayListe . WIE AUSLESEN ? Java Basics - Anfänger-Themen 5
T Objekte aus Datei in ArrayListe werfen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben