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

如何使用流从map获取每周最大值

澹台承
2023-03-14

如何将键字符串格式化为localdate,只有周、月和年作为流的输出?

数据集:

这可能不是初始化和格式化localdate的正确方式,因此请注意。这只是地图中实际数据的一小部分。

Map<LocalDate,Integer> CumulativeGarbageWasteDate = new HashMap<LocalDate,Integer>();
CumulativeGarbageWasteDate.put("2020-12-24",140);
CumulativeGarbageWasteDate.put("2021-01-1",182);
CumulativeGarbageWasteDate.put("2021-01-2",203);
CumulativeGarbageWasteDate.put("2021-01-3",321);
CumulativeGarbageWasteDate.put("2021-01-4",421);
CumulativeGarbageWasteDate.put("2021-01-5",621);
CumulativeGarbageWasteDate.put("2021-01-6",1200);
private static Map<LocalDate, Integer> sumByWeek (Map<LocalDate,Integer> CumulativeGarbageWasteDate){
    
    DateTimeFormatter formatter3 = new DateTimeFormatterBuilder().appendPattern("w/M/YY").parseDefaulting(ChronoField.DAY_OF_WEEK,DayOfWeek.FRIDAY.getValue()).toFormatter();
    

    return CumulativeGarbageWasteDate
            .entrySet()
            .stream()
            .collect(Collectors.groupingBy(
                    row-> LocalDate.parse(row.getKey().format(DateTimeFormatter.ofPattern("w/M/YY")),formatter3),
                    TreeMap::new,
                    Collectors.reducing(0, x->x.getValue(),Math::max)));
}
java.time.format.DateTimeParseException: Text '5/2/20' could not be parsed: Conflict found: Field MonthOfYear 1 differs from MonthOfYear 2 derived from 2020-01-31
row-> (row.getKey().format(DateTimeFormatter.ofPattern("w/M/YY"))),
row-> LocalDate.parse(row.getKey().format(DateTimeFormatter.ofPattern("w/M/YY")),formatter),

预期产出:

以下是打印地图时的预期输出:[年/月/年的周数=分组周值中的最高值]

{50/12/19=140,1/1/20=421,2/1/20=1200}

共有1个答案

屈博
2023-03-14

appendpattern(“w/m/yy”)更改为appendpattern(“dd/mm/yyy”)并将ofpattern(“w/m/yy”)更改为ofpattern(dd/mm/yyyy“)

使用localDate的parse()方法。LocalTime类的parse()方法,用于从作为参数传递的字符串(如2002-02-21)获取LocalTime实例。该字符串必须具有有效的日期-时间,并使用DateTimeFormatter.iso_local_date进行分析。使用DateTimeFormatter正确设置日期字符串的格式。

下面是例子

import java.time.format.DateTimeFormatter;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
public class MyClass {
    public static void main(String args[]) {
    Map<LocalDate, Double> map = new HashMap<>();
    DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy/MM/dd");
    LocalDate date1 = LocalDate.parse("2002/02/21", df);
    LocalDate date2 = LocalDate.parse("2003/02/21", df);
    
    map.put(date1, 12.4);
    map.put(date2, 14.4);
    
    }
}
 类似资料:
  • 问题内容: 我想使用java 8流方法从列表中获取最大值。 结构如下: 我读取了一个csv文件,并将每一行的数据存储在一个单独的type对象中。 所有这些对象都存储在一个名为 所有对象都有一个字段: a 包含2个字段:和 public class Round{ private List hits; } public class Hits{ private int numberOfGames; pr

  • 我的数据库表如下所示 我想要得到所有的一周的时间,有多少任务是在星期一,星期二...星期五创建的。如有任何帮助,我们将不胜感激。

  • 我有一个hashmap,看起来像这样: 我的ImageRecipeMap对象如下所示: 我想获取所有ImageID列表,并使用Java8流创建一个总的ImageID列表。到目前为止,这就是我所拥有的,但我的collect上似乎有一个编译错误:

  • 问题内容: 有一个ArrayList存储整数值。我需要在此列表中找到最大值。例如,假设arrayList存储的值为:,最大值为。 寻找最大值的有效方法是什么? @Edit:我只是找到一个不确定的解决方案 这将返回最大值。 比较每个值的另一种方法,例如 问题答案: 你可以使用轻松实现所需的内容- 高效阅读 -足够的 Javadoc for Collections.max 根据其元素的自然顺序返回给定

  • 问题内容: 如何从中加载数据并返回Map接口。如何在内部维护查询数据。我尝试加载,但出现以下异常,即 org.springframework.dao.IncorrectResultSizeDataAccessException:错误的结果 码:- 请帮我 问题答案: 如果您想获得一行,则比较合适。您选择的是无子句,因此您可能想要。该错误可能表明需要一行,但您查询的却是很多行。 查看文档。 有一个只

  • 问题内容: 我有一个任意形状的numpy数组,例如: 以及最后一个轴上argmax的结果: 我想得到最大: 但无需重新计算所有内容。我试过了: 但是得到了: 问题答案: 您可以使用- 对于任何数量的维度的通用ndarray情况,如中所述,我们可以使用,就像这样-