Problem ze strumieniem i printf

0

Witam, mam takie fragmenty kodu:

Pola prywatne klasy Film:

protected Integer id;
protected String tytul;
protected String rezyser;
protected Double cena;
protected String gatunek;
protected ArrayList<Integer> podobne;
protected Integer stanMagazynowy; 

Klasa MagazynFilmow

Fragment kodu na poczatku tej klasy:

 public class MagazynFilmow implements Cloneable, Serializable {

    protected ArrayList<Film> zbiorFilmow;

    public MagazynFilmow() {
        zbiorFilmow=new ArrayList<Film>();
        } 

I teraz metoda tej klasy, z ktora jest problem:

public void wydrukujFilmy() {
SortedSet<Film> lista = new TreeSet<Film>(new SortowanieRezyser());
lista.addAll(zbiorFilmow);

PrintWriter wyj = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
wyj.printf("%-4s%-4s%-15s%-15s%-10s%-10s%-15s%5s","Lp.","Id","Tytul","Rezyser","Cena","Gatunek","Id podobnych","Ilosc");
wyj.println();
lista.addAll(zbiorFilmow);
int nr=1;
for(Film f:lista) {     wyj.printf("%-4d%-4d%-15s%-15s%-10s%-10s%-15s%5d",nr++,f.id,f.tytul,f.rezyser,Double.toString(f.cena),f.gatunek,f.wypiszPodobne(),f.stanMagazynowy);
wyj.println();
}
wyj.flush(); 
}

I generalnie lista jest drukowana na ekranie prawidlowo, ladnie posortowana, w tym przypadku wg. pola rezyser (SortowanieRezyser to nazwa klasy z odpowiednim comparatorem). Jest jednak problem taki, ze jesli dwa (lub wiecej) filmy maja tego samego rezysera (lub inne pole, zaleznie od tego, wg. ktorego sortuje) to wydrukowany zostaje tylko pierwszy znaleziony na liscie film z podanym rezyserem/innym polem.

Przykladowo mam taka liste posortowana wg. pola Id (tutaj krzywo wyszlo troche, w konsoli jest ok):

Lp. Id Tytul Rezyser Cena Gatunek Id podobnych Ilosc
1 1 T1 R1 1.0 G1 2,3 0
2 2 T2 R2 2.0 G2 3,1 0
3 3 T3 R3 3.0 G3 1 0
4 4 A1 R1 9.56 Komedia 0

Ta sama lista posrtowana wg. pola rezyser wyglada juz nastepujaco:

Lp. Id Tytul Rezyser Cena Gatunek Id podobnych Ilosc
1 1 T1 R1 1.0 G1 2,3 0
2 2 T2 R2 2.0 G2 3,1 0
3 3 T3 R3 3.0 G3 1 0

Bede wdzieczny za wszelka pomoc.
Pozdrawiam!

1

Nie korzystaj ze zbiorów (typ Set), kolekcje możesz przecież posortować: Collections.sort(lista,komparator);.

0

Ok dzięki wielkie - pomogło :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0