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

Java:如何按属性对列表元素进行分组,java,Java,以下是场景: 我有一个段对象列表:列出需要按集合分组的段 **段数据** [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) -

以下是场景:

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

**段数据**

[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>();
我需要创建一个包含段列表(分组)的示例列表

此方案的最佳方法是什么?

列表结果=
List<CodeSample> result = 
    segments.stream()
            .collect(Collectors.groupingBy(Segment::getSet))
            .entrySet()
            .stream()
            .map(entry -> new CodeSample(entry.getKey(), entry.getValue()))
            .collect(Collectors.toList());
segments.stream() .collect(收集器.groupingBy(段::getSet)) .entrySet() .stream() .map(entry->newcodesample(entry.getKey(),entry.getValue()) .collect(Collectors.toList());
列表结果=
segments.stream()
.collect(收集器.groupingBy(段::getSet))
.entrySet()
.stream()
.map(entry->newcodesample(entry.getKey(),entry.getValue())
.collect(Collectors.toList());

您使用的是Java 8吗?您使用的是Java 8吗?谢谢,还有很多简短的代码!除了使用Java8流编写较短的代码外,它是否比用Java7编写代码更快?不,您可能可以编写同样或更高效的Java7代码。但是它会更长,更容易出错,更难阅读和理解。非常感谢JB:)谢谢你,还有更短的代码!除了使用Java8流编写较短的代码外,它是否比用Java7编写代码更快?不,您可能可以编写同样或更高效的Java7代码。但是它会更长,更容易出错,更难阅读和理解
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());