Skip to main content
Dat 1. Sem Efterår 2025
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Map og Set

Øvelser i Map og Set baseret på analyse af tekstfil Fil: mobydick.txt


Ud fra filen mobydick.txt skal du skrive et program, der analyserer ordfrekvenser i teksten. Programmet skal implementere følgende funktionalitet.

Her er en hjælpeklasse + metode til at læse filen og returnere en liste af ord:

public class FileIO {

    public ArrayList<String> readData(String path) {
        ArrayList<String> data = new ArrayList<>();
        File file = new File(path);
        try {
            Scanner scan = new Scanner(file);
            scan.nextLine();

            while (scan.hasNextLine()) {
                String line = scan.nextLine();
                data.add(line);
            }
            scan.close();
        } catch (FileNotFoundException e) {
            System.out.println("Filen findes ikke");
        }
        return data;
    }
}

1) Tæl antal linjer i filen

Skriv en metode, som tæller hvor mange linjer der findes i filen.

Method-signature:

public int countLines(List<String> lines)

Kald metoden fra main() for at teste den.


2) Tæl antal tegn i filen

Skriv en metode, som tæller hvor mange tegn der findes i filen.

Method-signature:

public int countCharacters(List<String> lines)

Kald metoden fra main() for at teste den.


3) Tæl antal unikke ord i filen

Skriv en metode, som tæller hvor mange unikke ord der findes i filen.

Method-signature:

public int countUniqueWords(List<String> lines)

Kald metoden fra main() for at teste den.


4) Find tre-bogstavsord, der starter med ‘a’

Skriv en metode, der finder alle ord på 3 bogstaver, som starter med ‘a’.

Method-signature:

public Set<String> wordsWith3LettersAStartingWithA(List<String> lines)

Kald metoden fra main() for at teste den.

Videreudvikling: Kan du gøre metoden mere generel, så både startbogstav og ordlængde kan angives som parameter?


5) Beregn hvor mange gange hvert ord optræder i filen

Skriv en metode, der returnerer et Map med hvert ord og hvor mange gange det forekommer.

Method-signature:

public Map<String, Integer> getCountMap(List<String> lines)

Kald metoden fra main() for at teste den.

Pseudokode

Opret et map-objekt
Loop gennem listen
    For hvert element:
        Hvis elementet ikke findes i map:
            map.put(element, 1)
        Ellers:
            count = map.get(element)
            count++
            map.put(element, count)

6) Find på andre interessante analyser af teksten

  • Hvilke ord er de mest almindelige?
  • Hvilke ord er de længste?
  • Find sætninger med flest ord.
  • Find palindromer i teksten.
  • Find antal sætninger i teksten.
  • Find gennemsnitlig ordlængde.
  • osv.