Iteracja po kolekcji

0

Witam. Mam problem ze "znikaniem" danych. Chodzi o to, że mam trzy ArrayListy. Gdy usunę coś z jednej usuwa się to również z pozostołych chociaż wydaje mi się, że są od siebie niezależne. Gdzie się mylę?

    List<String> rows = new ArrayList<>();
    List<List<String>> splitRows = new ArrayList<>();
    List<List<List<String>>> arrayOfSplitRows = new ArrayList<>();
  
    int counter = 0;
    for (List<EfektywnoscPracownikowViewModel> task : listaZdarzen)
    {
      for (EfektywnoscPracownikowViewModel item : task)
      {
        rows.add(buildRow(++counter, item, keyDynamicColumns));
      }
      splitRows.addAll(rows.stream().map(e -> Arrays.asList(e.split("\\s*;\\s*"))).collect(toList()));
      arrayOfSplitRows.add(splitRows);
      splitRows.clear();
      rows.clear();
}
     
1
splitRows.addAll(rows.stream().map(e -> Arrays.asList(e.split("\\s*;\\s*"))).collect(toList()));
arrayOfSplitRows.add(splitRows);
splitRows.clear();

Tworzysz listę, dodajesz wszystkie elementy do splitRows, a następnie dodajesz splitRows do arrayOfSplitRows.

Teraz wyobraź sobie że arrayOfSplitRows składa się na początku tylko z splitRows, to jest jedna i ta sama lista. Czyszcząc splitRows nie ma możliwości aby te dane zachowały się w arrayOfSplitRows, dopiero je wyczyściłeś.

Pomiń linijki z czyszczeniem list, zamiast dodawać wszystkie elementy do splitRows to używaj znaku '=' przypiszesz referencję do nowo stworzonej kolekcji. Pomyśl żeby te dane przechowywać jakoś inaczej niż w 3 listach zagłębionych w sobie, dlaczego chcesz to tak rozwiązać?

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