Iteracja po kolekcji

Iteracja po kolekcji
H2
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:64
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ę?

Kopiuj
    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();
}
     
edytowany 1x, ostatnio: hydrant23
KE
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 3 lata
  • Postów:57
1
Kopiuj
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ć?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.