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;
}
}
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.
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.
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.
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?
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.
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)
- 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.