Kolekcje - podstawowe zadanie

0

Cześć mam takie zadanie do wykonania z kolekcji i nie wiem gdzie tkwi mój błąd.
Napisz metodę, która zwraca liczbę różnych słów występujących w liście
Najpierw stworzyłem sobie listę

public static void main(String[] args) {

        LinkedList<String>lista = new LinkedList<>();
      lista.add("ala");
      lista.add("ter");
      lista.add("ger");
      lista.add("ala");
      lista.add("bazyla");

    }

Następnie napisałem taką metodę

public static int getNumberDifferentWords(List<String>words){
        int counter = 0;
        String repeat = words.get(0);
        for (int i = 0; i < words.size(); i++) {
            if(!repeat.equals(words))
                counter+=1;

        }
        return counter;

    }
0

Ja bym zrobił metodę, która zwracałaby mapę z Kluczem String i wartością Integer
Kluczem było by słowo, które liczyłeś a wartością liczba wystąpień.
w samej metodzie robisz Mapę i:

Iterujesz po liście, pobierasz słowo
sprawdzasz czy jest w mapie,
     jeśli nie to dodaj do mapy z kluczem równym słowu i ustaw wartość 1
     jeśli tak to dodaj do wartości pod kluczem słowo w mapie +1

zwróć mapę <String, Integer>
1
    public static int getNumberDifferentWords(List<String>words){
        return new HashSet<String>(words).size();
    }
0

Dzięki za odpowiedzi . Rzeczywiście przecież HashSet można było użyć

0
elzulninho napisał(a):

Cześć mam takie zadanie do wykonania z kolekcji i nie wiem gdzie tkwi mój błąd.
Napisz metodę, która zwraca liczbę różnych słów występujących w liście
Najpierw stworzyłem sobie listę

public static void main(String[] args) {

        LinkedList<String>lista = new LinkedList<>();
      lista.add("ala");
      lista.add("ter");
      lista.add("ger");
      lista.add("ala");
      lista.add("bazyla");

    }

Następnie napisałem taką metodę

public static int getNumberDifferentWords(List<String>words){
        int counter = 0;
        String repeat = words.get(0);
        for (int i = 0; i < words.size(); i++) {
            if(!repeat.equals(words))
                counter+=1;

        }
        return counter;

    }

Ale sądzisz że jak to ma działać? Co chcesz tu osiągnąć:

if(!repeat.equals(words))

porównujesz repeat, które nigdzie się nie zmienia, więc to zawsze będzie "ala" z words, czyli całą listą - sprawdzasz 5 razy czy pierwszy element listy equals lista

0

Rzeczywiście...

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