基于有条件的月份和年份链接Double的最佳方法-JAVA

基于有条件的月份和年份链接Double的最佳方法-JAVA,java,data-structures,Java,Data Structures,基于给定的年份和月份,我需要返回一个特定的双精度值 有一系列价值+3年价值。 我应该用什么?嵌套字典?如果条件句 解决方案我做了,并找到了最好的: 阅读Jon Skeet的评论更新:用户Basil Bourque通过使用Java的YearMonth类提供了比我下面提供的更好的解决方案: 如果您不想使用外部库,可以使用嵌套的 它们是否人口密集,即在设定的时间段内每个月有一个值?如果是这样的话,一个索引为从周期开始数月的数组似乎很简单。天哪,这是革命性的想法!!如何使用外部库?以前从未做过。。。你会

基于给定的年份和月份,我需要返回一个特定的双精度值

有一系列价值+3年价值。 我应该用什么?嵌套字典?如果条件句

解决方案我做了,并找到了最好的:


阅读Jon Skeet的评论更新:用户Basil Bourque通过使用Java的YearMonth类提供了比我下面提供的更好的解决方案:

如果您不想使用外部库,可以使用嵌套的


它们是否人口密集,即在设定的时间段内每个月有一个值?如果是这样的话,一个索引为从周期开始数月的数组似乎很简单。天哪,这是革命性的想法!!如何使用外部库?以前从未做过。。。你会推荐吗?我个人喜欢使用外部库。根据您对程序的内存需求,数组可能是更好的选择,正如Jon之前所说,尽管它需要一些辅助方法来确定年和月对应的正确索引。外部库的使用取决于您开发的IDE是否可用。您必须将库添加到项目的构建路径并导入正确的类。更简单的是:在简单的非嵌套映射中使用object作为键。示例:dates.put YearMonth.of 2017,Month.APRIL,55.0@BasilBourque我真不敢相信我从来都不知道那门课@雅各布。我建议您在答案中添加第三个部分,显示一个简单的地图,以YearMonth为键。保持你的其他部分完好无损,因为它们都很有趣。
Map<YearMonth, Double> dates = new HashMap<>();

dates.put(YearMonth.of(2017, Month.APRIL), 55.0);
dates.put(YearMonth.of(2017, Month.MARCH), 50.0);
dates.put(YearMonth.of(2017, Month.FEBRUARY), 35.5);

System.out.println(dates.get(YearMonth.of(2017, Month.MARCH)));

>> 50.0
Table<Integer, Month, Double> dates = HashBasedTable.create();

dates.put(2017, Month.APRIL, 55.0);
dates.put(2017, Month.MARCH, 50.0);
dates.put(2017, Month.FEBRUARY, 35.5);

System.out.println(dates.get(2017, Month.MARCH));

>> 50.0
Map<Integer, Map<Month, Double>> dates = new HashMap<>();

Map<Month, Double> thisYear = new HashMap<>();

thisYear.put(Month.APRIL, 55.0);
thisYear.put(Month.MARCH, 50.0);
thisYear.put(Month.FEBRUARY, 35.5);

dates.put(2017, thisYear);

System.out.println(dates.get(2017).get(Month.MARCH));

>> 50.0