当前位置: 首页 > 知识库问答 >
问题:

如何在hashmap中使用日期作为键[duplicate]

白青青
2023-03-14

我想知道是否可以读取具有以下结构的文本文件

1946-01-12;07:00:00;-1.3;G
1946-01-12;13:00:00;0.3;G
1946-01-12;18:00:00;-2.8;Y
1946-01-13;07:00:00;-6.2;G
1946-01-13;13:00:00;-4.7;G
1946-01-13;18:00:00;-4.3;Y
1946-01-14;07:00:00;-1.5;G

但是在hashmap中有更多的行,其中日期是键,而值是-1.3、0.3、-2.8、-6.2...等等?即使有相同日期的倍数,也有可能在同一日期/键中存储多个值吗?

共有1个答案

鲁华皓
2023-03-14

这个答案假设您的文件不包含重复的密钥,并且文件格式不需要验证。

您应该使用映射 ,映射 来存储数据,具体取决于是否需要时间部分:

Map<LocalDateTime, Double> map = new HashMap<>();

假设我们处于一个逐行读取文件直到文件结束的循环中,刚刚读取的行存储在字符串line中,我们可以这样解析该行:

String[] parts = line.split(";");

// the dates and times are all in ISO8601 format, so we can call "parse" directly
LocalDate date = LocalDate.parse(parts[0]);
LocalTime time = LocalTime.parse(parts[1]);
double number = Double.parseDouble(parts[2]);
LocalDateTime dateTime = LocalDateTime.of(date, time);
map.put(dateTime, number);

localdatetimelocaldate实现了hashcodeequals,所以我们根本不需要担心这个问题。

 类似资料:
  • 问题内容: 我使用布尔数组作为HashMap的键。但是问题是,尽管元素相同,但当将另一个数组作为键传递时,HashMap无法获取键。(因为它们是不同的对象)。 如何使其与数组作为键一起使用?这是代码: 这两个数组和都包含相同的元素,但是HashMap不会为返回任何内容。 我该如何运作? 问题答案: 您无法以这种方式这样做。都和将有不同的值,因为该方法是从继承,它使用参考来计算哈希码(默认实现)。因

  • 问题内容: 我试图建立一个HashMap,它将具有整数作为键和对象作为值。 我的语法是: 但是,返回的错误是-令牌“ int”的语法错误,此令牌后应包含尺寸-我不明白为什么应该添加尺寸(即:将int制成数组),因为我只需要存储一个数字作为关键。 我能做什么? 提前致谢!:) 问题答案: 您不能使用基元,因为HashMap在内部将对象用作键。因此,您只能使用从Object继承的对象(即任何对象)。

  • 我将QueryDSL与jpa一起使用,我想查找日期范围之间的记录,如下所示 但between仅支持布尔表达式和字符串表达式

  • 是否有任何直接的方法将日期设置为变量,但作为输入?我的意思是我不知道日期在设计时,用户应该给它。我尝试了以下代码,但它不起作用:Calendar mydate=new GregorianCalendar(int year,int month,int day);

  • 问题内容: 我需要转换为搜索的内容,但找不到任何内容。那你可以帮我解决这个问题吗? 编辑: 我在GWT屏幕上执行此转换过程。我在屏幕上,使用它的方法可以给我带来价值。因此,我应该将此值放入具有Date类型的对象的属性中。 希望我的编辑会更加清晰。 编辑2: 这行是我的问题的解决方案: 问题答案: 日期转换的最佳方法是使用以毫秒为单位的时间(UTC)。JS Date对象和java.util.Date