Wystąpienia każdego znaku w pliku

0

Napisz program (klasę), który zliczy wystąpienia każdego znaku w pliku podanym jako argument, a następnie wypisze wyniki na konsoli.

  • Wynik należy umieścić w kolekcji HashMap.
  • Kluczami będą obiekty klasy Character
  • Wartościami - obiekty własnej klasy Counter opakowującej liczby całkowite. Można też wykorzystać klasę java.lang.Integer. Chodzi o to, by można było zliczać wystąpienia danego znaku i je zapamiętywać w obiekcie będącym wartością asocjacji (klucz, wartość).
  • Do wypisania rezultatu może być potrzebna metoda entrySet() z klasy HashMap, która zwraca zbiór asocjacji (klucz, wartość) - obiektów klasy Map.Entry.
  • Można go przeglądać przy pomocy iteratora (uzyskanego metodą iterator()).
  • Dostęp do kluczy i wartości asocjacji można uzyskać metodami klasy Map.Entry : getKey() i getValue()
    Bardzo proszę o wskazówki, jak zacząć, co zrobić.
    Każda pomoc mile widziana. To bardzo pilne :(
    z góry dziękuję.
0

No i z czym problem?
Nie wiesz jak wczytać plik? Nie wiesz co to HashMap?

0

mogly ktos napisac ten programik

0

Jak czekasz tylko na gotowca to pomyliłeś działy.

Jeśli oczekujesz pomocy to wykaż trochę chęci. Pokaż co do tej pory zrobiłeś i z czym dokładnie masz problem.

0
        Map<Character, Long> lettercount = Files.lines(Paths.get("tekst.txt"))
                .flatMap(line -> line.chars()
                                .mapToObj(x -> (char) x)
                )
                .collect(Collectors.groupingBy(
                        letter -> letter,
                        Collectors.counting()
                ));
        System.out.println(lettercount);
0
import java.util.*;
import java.io.*;

public class Kolekcje1 {

public static void main(String[] args) throws IOException{
		
		Scanner scan = new Scanner(new File(args[0]));
		
		Map<Character, Counter> myMap = new HashMap<Character, Counter>();
		

	}

}
 

Właśnie nie wiem co powinienem dalej zrobić.
Pewnie to banalne, ale nie wiem niestety :(

0

O, dziękuje :)

0

Przepraszam, ale gdzie w tym rozwiązaniu występują:
Do wypisania rezultatu może być potrzebna metoda entrySet() z klasy HashMap, która zwraca zbiór asocjacji (klucz, wartość) - obiektów klasy Map.Entry.
• Można go przeglądać przy pomocy iteratora (uzyskanego metodą iterator()).
• Dostęp do kluczy i wartości asocjacji można uzyskać metodami klasy Map.Entry : getKey() i getValue()

???

0

Przepraszam ale wiesz co to znaczy może być potrzebna i można go przeglądać? Znaczy że można tak, a można inaczej...

0

Wartościami - obiekty własnej klasy Counter opakowującej liczby całkowite. Można też wykorzystać klasę java.lang.Integer. Chodzi o to, by można było zliczać wystąpienia danego znaku i je zapamiętywać w obiekcie będącym wartością asocjacji (klucz, wartość).

Mogę jeszcze prosić o pomoc z tym punktem?

0

No ale co ci sie nie podoba w Longu? No ale jak bardzo chcesz mieć mapę z integerami a nie longami to proszę:

        Map<Character, Integer> wordcount = Files.lines(Paths.get("tekst.txt"))
                .flatMap(line -> line.chars()
                                .mapToObj(x -> (char) x)
                )
                .collect(Collectors.groupingBy(
                        letter -> letter,
                        Collectors.reducing(0, e -> 1, Integer::sum)
                ));
        System.out.println(wordcount);

Ale przecież oboje wiemy że prowadzący ci tego kodu nie przyjmie bo ewidentnie nie rozumiesz z niego ani linijki...

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