Odczyt pliku tsv do mapy

0

Hej, chciałbym sczytać następujący plik tsv:

Groovy Z Y X D
Java V B C D A Z
C++ G J H
C# P S Q V D
Scala A D A

do mapy. Chciałbym, aby pierwsze słowo z linii było kluczem, a następne litery wartościami - lista Stringów.
Rozumiem, że po znaku nowej linii będzie kolejny klucz i tak do ostatniej linii w pliku. Ktoś mnie nakieruje, ewentualnie poleci lekturę do dobrych, aktualnych praktyk odczytu plików.

0

A chcesz to zrobić samemu od początku do końca czy chcesz to zrobić tak jak się robi w firmach? Bo jak to drugie to są gotowe biblioteki które odczytają ci ten tekst jako np listę tablic lub listę list.
Potem już łatwo taką listę zamienić na mapę np strumieniami

0

@KamilAdam: Przede wszystkim chciałbym to zrobić i pójść z zadaniem dalej. Jakakolwiek podpowiedź mile widziana.

1

@3l3ctric_philip:
Np. tak:

Map<String,List<String>> result = Files.lines(Paths.get("plik.tsv"))
                    .map(line -> {
                        String[] items = line.split(" ",-1);
                        String key = items[0];
                        List<String> values = Arrays.asList(items).subList(1,items.length);
                        return new AbstractMap.SimpleEntry<>(key,values);})
                    .collect(Collectors.toMap(p->p.getKey(),p->p.getValue()));
0

@UglyMan:

Map<String, Set<String>> map = new HashMap<>();

        try {
            BufferedReader in = new BufferedReader(new FileReader(path));
            String line;

            while ((line = in.readLine()) != null) {
                String[] tab = line.split("\t");
                map.put(tab[0], Arrays.asList(tab).subList(1, tab.length).stream().collect(Collectors.toCollection(HashSet::new)));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
0
3l3ctric_philip napisał(a):
    } catch (Exception e) {
        e.printStackTrace();
    }

No chyba nie.

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