相关疑难解决方法(0)

Java:如何在相应的一周内对所有Java日期进行分组?

问题:

我有很多日期,我需要按周安排.

问题: 如何按日期的一周对日期进行分组?

示例数据集

Date date = new SimpleDateFormat.parse("04/01/2015")
Date date = new SimpleDateFormat.parse("04/02/2015")
Date date = new SimpleDateFormat.parse("04/03/2015")
Date date = new SimpleDateFormat.parse("04/04/2015")
Date date = new SimpleDateFormat.parse("04/05/2015")
Date date = new SimpleDateFormat.parse("04/06/2015")
Date date = new SimpleDateFormat.parse("04/07/2015")
Date date = new SimpleDateFormat.parse("04/08/2015")
Date date = new SimpleDateFormat.parse("04/09/2015")
Run Code Online (Sandbox Code Playgroud)

期望的输出

HashMap<Date, Date> hashMap = groupByWeek(ArrayList<Date> dates);

printWeeklyGroupedDates();

Week 1:
04/01/2015
04/02/2015
04/03/2015
04/04/2015
04/05/2015
04/06/2015
04/07/2015
Week 2:
04/08/2015
04/09/2015
Run Code Online (Sandbox Code Playgroud)

我试过的

public Date getWhichYearlyWeek(Date date){

  Calendar cal …
Run Code Online (Sandbox Code Playgroud)

java date

6
推荐指数
2
解决办法
6393
查看次数

如何使用Java流按会计年度对项目进行分组

假设我有一份月度商店销售清单,以便:

ID, date, amount
1, Jan 2016, $500
2, Feb 2017, $200
3, October 2017, $300
Run Code Online (Sandbox Code Playgroud)

我的财政年度是2016年9月1日到2017年8月31日.换句话说,前两个条目是在一个会计年度,另一个是在第二个会计年度.实际会计年度是特定于用户的.

我想storeSales为每个会计年度创建一个列表.

到目前为止,我有:

Map<fiscalYearID, List<StoreSale> = storeSales.stream()
                                .collect(
                                    Collectors.groupingBy(
                                        storeSale -> storeSale.getSaleLocalDate()));
Run Code Online (Sandbox Code Playgroud)

问题是上面的代码只会按确切日期分组.我可以添加,.getYear()只能按年份而不是财政年度.我还考虑过使用Stream.iterate()每个会计年度日期范围,然后浏览该日期范围内所有商店的商店销售列表到列表中,但这会非常难看,大O值开始迅速攀升.这将是这样的:

Stream.iterate(startDate, date -> date.plusMonths(1))
        .limit(ChronoUnit.MONTHS.between(startDate, endDate.plusMonths(1)))
        .forEach(
        {
            addToFiscalYear(fiscalYearID, 
                    storeSales.stream().
                            .filter(storeSale -> storeSale.getSaleLocalDate().equals(date))
                            .collect(Collectors.toList());
        });
Run Code Online (Sandbox Code Playgroud)

或类似的东西.我没有太多探索它,因为它的大O快速增加,我希望有更好的解决方案......

java java-8 java-stream

2
推荐指数
1
解决办法
121
查看次数

标签 统计

java ×2

date ×1

java-8 ×1

java-stream ×1