Odczyt pliku tsv do mapy

Odczyt pliku tsv do mapy
3P
  • Rejestracja:około 5 lat
  • Ostatnio:6 miesięcy
  • Postów:72
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.

KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:27 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
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


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
3P
  • Rejestracja:około 5 lat
  • Ostatnio:6 miesięcy
  • Postów:72
0

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

UglyMan
A co już masz?
GS
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 18 godzin
  • Postów:1265
1

@3l3ctric_philip:
Np. tak:

Kopiuj
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()));
3P
  • Rejestracja:około 5 lat
  • Ostatnio:6 miesięcy
  • Postów:72
0

@UglyMan:

Kopiuj
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();
        }
edytowany 4x, ostatnio: 3l3ctric_philip
3P
@KamilAdam: mógłbyś pokazać jak się robi to firmach? jakie są najlepsze aktualne praktyki?
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 7 godzin
  • Lokalizacja:Laska, z Polski
  • Postów:10073
0
3l3ctric_philip napisał(a):
    } catch (Exception e) {
        e.printStackTrace();
    }

No chyba nie.

edytowany 1x, ostatnio: Riddle

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.