gpt4 book ai didi

java - 从 CSV 类型数据创建 map

转载 作者:行者123 更新时间:2023-12-02 11:55:54 24 4
gpt4 key购买 nike

我将以下数据存储在“.txt”文件中:

Dave,40,04/05/1978
Scott,34,05/06/1986
Sam,24,04/05/1978
Love,32,04/06/1989
Harry,29,04/06/1989

我用过BufferedReader读取、分割(使用 , )并将其存储在 String[] stringArray 中.

现在stringArray[0]将有名字,stringArray[1]将有编号和 stringArray[2]将有日期。

我现在正在寻找构建一个 HashMap如下所示,将键显示为日期(在 String 中),将值显示为 ListMember出生日期相同

预期输出:

DOBMap: {04-05-1978=[[Dave,40],[Same,24]], 05/06/1986=[[Scott,34]], 04/06/1989=[[Love,32],[Harry,29]]

我有Member它具有以下变量:

private String name;
private String no;
private String DOB;

由于我是 Collection 新手,因此我正在寻求帮助来实现这一目标DOBMap输出。

最佳答案

我认为使用 Java Stream API ( https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html ) 可以做得更好。这里我假设你的Memeber类有构造函数:

Member(String[] array)

在这种情况下:

import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import java.util.Map;
import java.util.stream.Stream;
import static java.util.stream.Collectors.groupingBy;

public class SO1 {

public static void main(String[] args) {
String filePath = ".../src/main/resources/SO1.txt";

try (Stream<String> lines = Files.lines(Paths.get(filePath))) {

Map<String, List<Member>> map = lines
.map(line -> line.split(","))
.map(Member::new)
.collect(groupingBy(Member::getDOB));

System.out.println(map);
} catch (Exception e) {
e.printStackTrace();
}
}
}

打印:

{05/06/1986=[Member{name='Scott', no='34', dob='05/06/1986'}], 04/05/1978=[Member{name='Dave', no='40', dob='04/05/1978'}, Member{name='Sam', no='24', dob='04/05/1978'}], 04/06/1989=[Member{name='Love', no='32', dob='04/06/1989'}, Member{name='Harry', no='29', dob='04/06/1989'}]}

可以说,这段代码的意图比显式迭代的代码更清晰。

关于java - 从 CSV 类型数据创建 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47606130/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com