繁体   English   中英

Java:如何按属性对列表元素进行分组

[英]Java: how to group list elements by property

这是场景:

我有一个细分对象列表:列出我需要按集合分组的细分。

**细分数据**

[CODE]: 9X-594 (D/ET) - [SET]: 1
[CODE]: 9X-600 (D/ET) - [SET]: 2
[CODE]: 9X-602 (D/ET) - [SET]: 3
[CODE]: 9X-596 (D/ET) - [SET]: 4

[CODE]: 9X-970 (S/ET) - [SET]: 5
[CODE]: 9X-579 (E/ET)

[CODE]: 9X-974 (S/ET) - [SET]: 6
[CODE]: 9X-589 (E/ET)
[CODE]: 9X-599 (E/ET)

[CODE]: 9X-964 (S/ET) - [SET]: 7
[CODE]: 9X-581 (E/ET)

我需要将这些数据分组为以下格式:

List<CodeSample> samples = new ArrayList<CodeSample>();

其中CodeSample是一个包含Segment列表的类。

public class CodeSample {

    private int set;
    private List<Segment> segments;

    //getters/setters here
    ...
}

我需要按组对细分进行分组,例如:

samples = [
    { set: 1, [{code: "9x-594 (D/ET)"}]},
    { set: 2, [{code: "9x-600 (D/ET)"}]},
    { set: 3, [{code: "9x-602 (D/ET)"}]},
    { set: 4, [{code: "9x-596 (D/ET)"}]},
    { set: 5, [{code: "9x-970 (D/ET)"}, {code: "9x-579 (D/ET)"}]},
    { set: 6, [{code: "9x-974 (D/ET)"}, {code: "9x-589 (D/ET)"}, {code: "9x-599 (D/ET)"}]},
    { set: 7, [{code: "9x-964 (D/ET)"}, {code: "9x-581 (D/ET)"}]}
]

我需要创建一个包含细分列表(分组)的样本列表。

在这种情况下最好的方法是什么?

List<CodeSample> result = 
    segments.stream()
            .collect(Collectors.groupingBy(Segment::getSet))
            .entrySet()
            .stream()
            .map(entry -> new CodeSample(entry.getKey(), entry.getValue()))
            .collect(Collectors.toList());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM