Witam!

Od kilku dni intensywnie pracuje nad biblioteką muzyczną w ramach projektu do mojego programu, co niesamowicie zżera mi czas. Do rzeczy.
Cały wygląd biblioteki opieram na trzech klasach.

Klasa BandBox generuje klase AlbumBox, która generuje klase Song Box.

Tutaj jest kod który po odnalezieniu i zparsowaniu plików w wybranym folderze, wywołuje powyższe klasy.
klasa SongsArray tworzy ArrayList która jest cztero elementowa: [0]-path, [1]-bandName,[2]-albumTitle,[3]-songTitle

SongsArray songsArray = new SongsArray();

for (String[] string: songsArray.getArrayList()) {
            if(!contains(tmpArrayOfBands,string[1])){
                tmpArrayOfBands.add(string[1]);
                overallArrayOfExistingBands.add(string[1]);
            }
        }


        for (String s: tmpArrayOfBands) {


            for (String[] string : songsArray.getArrayList()) {
                if (string[1].equals(s)) {
                    if (!contains(tmpArrayOfAlbums, string[2]))
                        tmpArrayOfAlbums.add(string[2]);
                    tmpArrayOfSongs.add(new String[]{string[2], string[3]});

                }

            }

            BandBoxGenerator bandBoxGenerator = new BandBoxGenerator(s,tmpArrayOfAlbums, tmpArrayOfSongs);

            content.getChildren().addAll(bandBoxGenerator.getAnchorPane());


            tmpArrayOfSongs.clear();
            tmpArrayOfAlbums.clear();
        }

        tmpArrayOfBands.clear();
 

Na podobnej zasadzie jest wywoływana klasa tworząca albumy z klasy bandBox natomiast utwory są dodawane w formie TableView która jest tworzona w klasie SongBox.

Całość daje całkiem przyjemny efekt: layout

Niestety pojawia się tutaj taki problem, że kiedy chcę dodać jakiś plik to nie ma jak go posortować tak aby trafił w konkretne miejsce w bibliotece, jednym sposobem jaki mi przychodzi do głowy to jest przeładowanie całej biblioteki po rozszerzeniu wcześniejszej listy ścieżek do plików o nowo dodaną. I o ile to nie wydaje się być głupi pomysł to pojawia się problem z wydajnością takiego programu, gdyż co jak ktoś ma kilkadziesiąt zespołów na komputerze. Poza tym problem pamięci, przecież nie usuwam wcześniej utworzonych klas więc one gdzieś muszą tkwić.

Drugim pomysłem jest jest utworzenie drzewa obiektów i potem przeładowywać(z czym samym w sobie jest nie mały problem) pojedyncze obiekty szczególnie w przypadku kiedy dla istniejącego już obiektu musimy coś dodać. W tym jest główny problem, ponieważ dodawanie utworu którego wykonawca nie znajduje się w bibliotece to nie problem.

Pytaniem moim jest: Czy ktoś ma jakiś ciekawy pomysł jak można byłoby inaczej rozwiązać cały problem i uzyskać podobny efekt wyglądu biblioteki?