Java 重组列表<;MyType>;列出<;列表<;MyType>&燃气轮机;
我有一个ArrayList,如下所示: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
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())