Tablica String - sprawdzanie ilości powtórzeń

Tablica String - sprawdzanie ilości powtórzeń
Hapi
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 18
0

Witam

Nie wiem jak zrobić taki program

Mam elementy tablicy ArrayList, otrzymuje je za pomocą
tab.get(0);
tab.get(1);
itd.
I teraz jak zrobić, żeby zliczyć w oddzielnej metodzie takie same elementy tablicy?

Przykład:
tab.get(0); // AA
tab.get(1); // BB
tab.get(2); // AA
tab.get(3); // AA

i żeby program wyświetlił mi:
AA 3
BB 1

Próbowałem różnymi sposobami, domyślam się że muszą być 2 pętle jedna która prześwietli wszystkie elementy tablica a druga ktora sprawdzi czy sa takie same elementy to zwiększy licznik.

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
0

Jedna pętla. Użyj

Kopiuj
HashMap<String,Integer>
VC
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 25
0

Może coś takiego.

Kopiuj
String[] words = {"AA", "BB", "CC", "BB", "AA", "CC", "AA", "DD"};
for(int i = 0; i < words.length; ++i)
{
   if(words[i] == null)
        continue;

   int rep = 1;
   for(int k = i+1; k < words.length; ++k) {
        if(words[i].equals(words[k])) {
            words[k] = null;
            rep++;
        }
   }

   System.out.printf("%s %d\n", words[i], rep);
}
Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
1
Kopiuj
Map<String, Integer> counting = new HashMap<String, Integer>();
for(String element : arrayList){
    if(!counting.containsKey(element)){
        counting.put(element,0);
    }
    counting.put(element,couting.get(element)+1);
}
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
    Collections.frequency(Arrays.asList(twojaTablica), wartość);
Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0
niezalogowany napisał(a):
Kopiuj
    Collections.frequency(Arrays.asList(twojaTablica), wartość);

Tylko że to jest O(n) na jedno wywołanie. Nawet jakbyś wcześniej zrobił HashSet z tej listy (znów O(n)) to nadal pesymistycznie miałbyś O(n2) jeśli wszystkie elementy są różne. Rozwiązanie z HashMap daje średni czas O(n), a z TreeMap daje pesymistyczny czas O(nlogn).

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.