リストを分類するための最良の方法

メフディ:

私は、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からの応答をサポート

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=316283&siteId=1