Sczytywanie pliku csv do mapy

0

Hej, jaki jest najlepszy sposób, aby sczytując plik CSV do mapy Map<String, ArrayList<Double>> mapa = new HashMap<>() ostatnią wartość wrzucić jako klucz (atrybut decyzyjny), a pozostałe atrybuty jako wartość do Listy.

mam takie obserwacje w pliku:
6.3;3.3;6.0;2.5;Iris-virginica

2

Na szybko:

public static Map<String, List<Double>> getData() {
	Map<String, List<Double>> result = new HashMap<>();
	Reader in = new FileReader("path/to/file.csv");
	Iterable<CSVRecord> records = CSVFormat.EXCEL.parse(in);
	for (CSVRecord record : records) {
		String key = record.get(4);
		result.put(key,
		Arrays.asList(
			parseDouble(record.get(0),
			parseDouble(record.get(1),
			parseDouble(record.get(2),
			parseDouble(record.get(3)
		);
	}
	return result;
}
0

@lookacode1: wszystko spoko. ale muszę to zrobić nie używając zewnętrznych bibliotek.

1
List<String> lines = Files.readAllLines(Paths.get("a.csv"));

Map<String, List<Double>> map = lines.stream()
        .map(e -> stream(e.split(";")))
        .map(e -> e.collect(toList()))
        .collect(
                toMap(
                        list -> list.get(list.size() - 1),
                        list -> list.subList(0, list.size() - 1).stream()
                                .map(i -> Double.valueOf(i)).collect(toList())
                )
        );

Mało wydajnie, ale chociaż w nieczytelnym streamie :)

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