如何用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

有关现代日期时间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], DateTimeFormatter.ofPattern("MM.dd.uuuu")), 
fs -> Integer.valueOf(fs[0]));

从给定的数据来看,似乎没有真正的理由使用映射——正如您所指出的,您很难找到合适的值。您可以将它们累积到ArrayList中,如果顺序不重要,甚至可以累积到HashSet中。

相关内容

  • 没有找到相关文章

最新更新