Java 重组列表<;MyType>;列出<;列表<;MyType>&燃气轮机;

Java 重组列表<;MyType>;列出<;列表<;MyType>&燃气轮机;,java,arraylist,java-8,Java,Arraylist,Java 8,我有一个ArrayList,如下所示: final List<MyType> myList = new ArrayList<>(); JSON如下所示: public class MyType { ... private DateTime startTime; private DateTime endTime; private DateTime dateOfContainer; // I use @JSONSerializer here to o

我有一个ArrayList,如下所示:

final List<MyType> myList = new ArrayList<>();
JSON如下所示:

public class MyType {
   ...
   private DateTime startTime;
   private DateTime endTime;
   private DateTime dateOfContainer; // I use @JSONSerializer here to only serialize date
   ....
}
[
 {
...
"endTime": "16:00",
"startTime": "13:00",
"dateOfContainer": "27.11.2015"
},
{
...
"endTime": "12:00",
"startTime": "08:00",
"dateOfContainer": "27.11.2015"
},
{
... 
"endTime": "16:00",
"startTime": "13:00",
"dateOfContainer": "25.11.2015"
}, 
{
...
"endTime": "19:00",
"startTime": "18:00",
"dateOfContainer": "21.11.2015"
},
...
List<List<MyType>>
现在我想列出如下清单:

public class MyType {
   ...
   private DateTime startTime;
   private DateTime endTime;
   private DateTime dateOfContainer; // I use @JSONSerializer here to only serialize date
   ....
}
[
 {
...
"endTime": "16:00",
"startTime": "13:00",
"dateOfContainer": "27.11.2015"
},
{
...
"endTime": "12:00",
"startTime": "08:00",
"dateOfContainer": "27.11.2015"
},
{
... 
"endTime": "16:00",
"startTime": "13:00",
"dateOfContainer": "25.11.2015"
}, 
{
...
"endTime": "19:00",
"startTime": "18:00",
"dateOfContainer": "21.11.2015"
},
...
List<List<MyType>>
列表
其中MyType与容器的日期相同,例如前两个

Java-8有没有一种简单的方法可以做到这一点? 非常感谢

myList.stream().collect(Collectors.groupingBy(MyType::getDateOfContainer))
将为您提供一个映射,其中对象按日期属性分组

要从此
映射
获取
列表
,您可以创建
数组列表
,并使用该
映射的值对其进行初始化:

List<List<MyType>> list = new ArrayList<> (
    myList.stream().collect (Collectors.groupingBy(MyType::getDateOfContainer)).values());
List List=newarraylist(
myList.stream().collect(Collectors.groupingBy(MyType::getDateOfContainer)).values();

请注意,为了使
groupingBy
按预期工作,类必须重写
equals
。我不确定这里的情况是否如此。

非常感谢这种方法,效果很好,我想再问一个关于这个问题的问题。是否有可能获得一个有序的列表,以便最新的列表排在第一位。非常感谢@用户3318489,改为使用收集器.groupingBy(MyType::getDateOfContainer,LinkedHashMap::new,Collectors.toList())