Melhor maneira de categorizar uma lista

Mehdi:

Eu tenho um objeto Order

public class Order{
  private Date orderDate;
  //other fields + getters & setters
}

E uma lista de pedidos ( List <Encomendas> ). Agora eu quero grupo esta lista de pedidos com base em orderDate similares (similar em aqui significa, mesmo ano, mês e dia) e produzir um mapa como este:

Map<Date, List<Order>> orderMap = new HashMap<>();

Como fazer isso em Java 8+?

Tome nota que pode ter data semelhante, mas timestamp diferente que significa que nós queremos baseou em "ano, mês, dia"

Scorix:

Eu realmente não apoiar o ponto de fazer tudo com correntes, mas você pode fazê-lo com uma maneira convertion duro.

 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);
    }));

Esta é sob a circunstância que você precisa util data. Caso contrário, eu apoio à resposta da Michalk

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=316282&siteId=1
Recomendado
Clasificación