メフディ:
私は、Orderオブジェクトを持っています
public class Order{
private Date orderDate;
//other fields + getters & setters
}
そして、Ordersのリスト(一覧<オーダー>)。今、私は同様のorderDateで(同様のここでの手段、同じ年、月、日)に基づいて、グループに注文のリストをしたいと、このようなマップを生成します。
Map<Date, List<Order>> orderMap = new HashMap<>();
どのようにJavaの8+でこれを行うには?
注意してください、私たちは私たちがしたいの手段と同様の日付が異なるタイムスタンプを持っている可能性があること「年、月、日」に基づいて、
Scorix:
私は本当にストリームですべてを行うためのポイントをサポートしていませんが、あなたは、ハードconvertionの方法でそれを行うことができます。
List<Order> orders = ... your list ...
Map<Date, List<Order>> orderMap = orders.stream().collect(Collectors.groupingBy(order->{
//Converting from Date to Instant
Instant dateInstant = order.getOrderDate().toInstant();
//Converting Instant to LocalDateTime and setting it to the start of the day
LocalDateTime dateTime = dateInstant.atZone(ZoneId.systemDefault()).toLocalDate().atStartOfDay();
//Converting it back to an instant
Instant startOfDayInstant = dateTime.atZone(ZoneId.systemDefault()).toInstant();
//Returning the util date
return Date.from(startOfDayInstant);
}));
これは、あなたがそのような状況下で必要な utilの日付を。そうでなければ私はmichalkからの応答をサポート