微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用txt文件中的数据填充HashMap

如何解决如何使用txt文件中的数据填充HashMap

我需要将Dates.txt文件中的以下日期放入HashMap中。

1 05.05.2017
2 11.12.2018
3 05.30.2020
4 03.15.2011
5 12.15.2000
6 10.30.2010
7 01.01.2004
8 12.31.1900
9 02.28.2014
10 10.10.2012

HashMap的格式应为

初始哈希图:

2017-05-05:1
2018-11-12:2
2020-05-30:3
2011-03-15:4
2000-12-15:5
2010-10-30:6
2004-01-01:7
1900-12-31:8
2014-02-28:9
2012-10-10:10

到目前为止,我的代码

public class driver {
    public static void main(String[] args) throws FileNotFoundException {
        HashMap <LocalDate,Integer> dates = new HashMap <LocalDate,Integer>();
        Scanner s = new Scanner(new File("Dates.txt")); 
        while(s.hasNext())
        {
           dates.put(LocalDate.parse("mm.dd.yyyy"),Integer);
        }   

        System.out.println(dates);
    }
}

我在弄清楚要在dates.put(key,value)代码行中输入什么内容时遇到了麻烦,因此HashMap的格式如上所述。我不确定是否最好将txt文件读入ArrayList,然后再使用put()填充HashMap。任何指导或答案将不胜感激!

解决方法

您可以执行以下操作:

Map<LocalDate,Integer> map = new HashMap<>();
Scanner s = new Scanner(new File("Dates.txt"));
while (s.hasNextLine()) {
    // Read a line
    String line = s.nextLine();
    // Split the line on whitespace
    String[] data = line.split("\\s+");
    if (data.length == 2) {
        map.put(LocalDate.parse(data[1],DateTimeFormatter.ofPattern("MM.dd.uuuu")),Integer.valueOf(data[0]));
    }
}
System.out.println(map);

以给定模式解析日期字符串的示例:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        LocalDate date = LocalDate.parse("05.05.2017",DateTimeFormatter.ofPattern("MM.dd.uuuu"));
        System.out.println(date);
    }
}

输出:

2017-05-05

通过 Trail: Date Time 了解有关现代日期时间API的更多信息。

,

作为已经提供的出色答案的替代方法,这可以通过使用流来完成:

Map<LocalDate,Integer> result = Files.lines(Paths.get("Dates.txt")
    .map(l -> l.split(" ")).filter(fs -> fs.length == 2)
    .collect(Collectors.toMap(
         fs -> LocalDate.parse(fs[1],fs -> Integer.valueOf(fs[0]));
,

从给定的数据来看,似乎没有必要使用地图-如您所述,您一直在努力寻找合适的价值。您可以将它们累积到ArrayList中,如果顺序不重要,甚至可以累积到HashSet中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。