Hey,
ich arbeite mit einer LinkedList aus dem util-Package!
Allerdings gibtes ein Problem!
Meine Liste enthält Songs, alle die auf meinem PC sind, und diese werden jetzt in eine JList geschrieben!
So wenn ich nun einen auswähle und auf hinzufügen drücke, soll es in einen neue LinkedList gespeichert werden.
Da beide Listen serialisiert werden kann man den Unterschied gut erkennen!
Und es gibt keinen! Sie sind beide gleich groß und haben den selben Inhalt!
Und das obwohl ich clone! Also das Objekt neu erstelle!
Bitte helft mir.. hier mal der Code:
Die mediaLib existiert 2 mal einmal für die komplette Medienbibliothek (aus der ausgewählt wird) und einmal als WishList!
ich arbeite mit einer LinkedList aus dem util-Package!
Allerdings gibtes ein Problem!
Meine Liste enthält Songs, alle die auf meinem PC sind, und diese werden jetzt in eine JList geschrieben!
So wenn ich nun einen auswähle und auf hinzufügen drücke, soll es in einen neue LinkedList gespeichert werden.
Da beide Listen serialisiert werden kann man den Unterschied gut erkennen!
Und es gibt keinen! Sie sind beide gleich groß und haben den selben Inhalt!
Und das obwohl ich clone! Also das Objekt neu erstelle!
Bitte helft mir.. hier mal der Code:
Code:
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (source == listwahl) {
if (songs.getSelectedValue() != null) {
Song gew = (Song) songs.getSelectedValue();
wish(gew.clone());
}
}
}
public void wish(Song x) {
wishes.wish(x); // wishes is die WishList
try {
boolean writable = false;
while (!writable) {
BufferedReader f = new BufferedReader(new FileReader("N:\\WishUWhat\\switch.swh"));
writable = f.readLine().contains("0");
f.close();
} // Testing Writability
System.out.println("1");
FileWriter f1 = new FileWriter("N:\\WishUWhat\\switch.swh");
f1.write("1");
f1.close(); // set not writable
System.out.println("2");
wishes.serialize();
FileOutputStream fs = new FileOutputStream("N:\\WishUWhat\\wishes.mlb");
ObjectOutputStream os = new ObjectOutputStream(fs);
os.writeObject(wishes);
os.close();
System.out.println("3");
FileWriter f2 = new FileWriter("N:\\WishUWhat\\switch.swh");
f2.write("0");
f2.close(); // set writable
System.out.println("4");
} catch (IOException e) {
System.out.println(e);
}
}
}
MediaLib:
package basics;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.LinkedList;
public class MediaLib implements Serializable {
/**
*
*/
private static final long serialVersionUID = 3330967274746414972L;
private static LinkedList<Song> media = new LinkedList<Song>();
private String name;
public MediaLib (String name) {
this.name = name;
}
public void serialize() {
try {
FileOutputStream fs = new FileOutputStream("N:\\WishUWhat\\" + this.name + "_medialibdata.mlb");
ObjectOutputStream os = new ObjectOutputStream(fs);
os.writeObject(media);
os.close();
System.out.println("Speichern hat geklappt!");
} catch (IOException e) {
System.out.println(e);
}
}
public void unserialize() {
try {
FileInputStream fs = new FileInputStream("N:\\WishUWhat\\" + this.name + "_medialibdata.mlb");
ObjectInputStream is = new ObjectInputStream(fs);
media = (LinkedList<Song>) is.readObject();
is.close();
} catch (IOException e) {
System.out.println(e);
} catch (ClassNotFoundException f) {
System.out.println(f);
}
}
public void add(Song x) {
media.add(x);
}
public void wish(Song x) {
if (exists(x))
getSong(x).vote();
else
media.add(x);
}
public boolean exists(Song x) {
boolean existenz = false;
for (int i = 0; i < media.size() && (! existenz); i++) {
existenz = media.get(i).toString().equals(x.toString());
}
return existenz;
}
public Song getSong(Song x) {
Song theSong = null;
for (int i = 0; i < media.size(); i++) {
if (media.get(i).toString().equals(x.toString())) {
theSong = media.get(i);
}
}
return theSong;
}
public Song[] toArray() {
return media.toArray(new Song[media.size()]);
}
public Song[] findArtist(String titel) {
LinkedList<Song> l = new LinkedList<Song>();
LinkedList<Song> sl = media;
for (int i = 0; i < sl.size(); i++) {
if (sl.get(i).getTitel().toLowerCase().contains(titel.toLowerCase()))
l.add(sl.get(i));
}
Song[] songs = new Song[l.size()];
for (int o = 0; o < songs.length; o++)
songs[o] = l.get(o);
return songs;
}
public Song[] findTitels(String artist) {
LinkedList<Song> l = new LinkedList<Song>();
LinkedList<Song> sl = media;
for (int i = 0; i < sl.size(); i++) {
if (sl.get(i).getArtist().toLowerCase().contains(artist.toLowerCase()))
l.add(sl.get(i));
}
Song[] songs = new Song[l.size()];
for (int o = 0; o < songs.length; o++)
songs[o] = l.get(o);
return songs;
}
public String toString() {
return media.toString();
}
}
Die mediaLib existiert 2 mal einmal für die komplette Medienbibliothek (aus der ausgewählt wird) und einmal als WishList!
Zuletzt bearbeitet: