Jak elegancko napisać dodawanie elementów do tablicy o nieznanym rozmiarze?

0

Okej, więc mam dużą tablice która ma ~ 10000 elementów. Niektóre z tych elementów (nie wiem ile, najczęściej będzie to 0 ale może też się zażyć że będą wszystkie) spełniają jakiś warunek. Chciałbym teraz wylosować jeden z tych elementów który spełnia warunek.

Moja myśl:

  • przelecieć pętlą po dużej tablicy
  • zapisać wszystkie pasujące elementy do małej tablicy
  • wybrać losowy element z małej tablicy

Ale żeby to zrobić mała tablica musiałaby być albo ArrayList albo mieć rozmiar conajmniej dużej tablicy, ii wtedy pozostała część elementów byłaby pusta.

Nie wiem jak bardzo wydajność się zmniejszy przez zastosowanie ArrayList zamiast zwykłej tablicy, nie siedzę w javie :/ Jak spec by to zrobił?

PS; wolałbym uniknąć czegoś takiego

do {
  element = losowyElement();
} while (element.spelniaWarunek());
3

Java 8

       String[] array = new String[10];
       array[0] = "123123123123";
       array[1] = "123";
       array[2] = "123123123123";
       array[3] = "123123123123";
       array[4] = "123123";
       array[5] = "123123123123";
       array[6] = "123123123123";
       array[7] = "123123123123";
       array[8] = "123123123123";
       array[9] = "123123123123";
       Arrays.asList(array).stream().filter(p->p.length()>10).forEach(p->System.out.println(p));

weź te tablice jako liste -> do stream'a -> filtruj(do filter() możesz przekazać jakiś object lambdy który filtruje co tam chcesz) -> forEach wiadomo

0

W małej tablicy nie trzeba przechowywać całych obiektów, wystarczy przechowywać numery, pod którymi są elementy w dużej tablicy w ArrayList<Integer>. W dalszym etapie wylosujesz jeden z tych numerów. Ponadto, tablica int z 10000 elementów obok Twojej tablicy obiektów to nie jest żaden problem, oprócz tego byś pamiętał w osobnej zmiennej liczbę zapisanych elementów.

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