2016-07-01 3 views
0

하여 그룹 목록의 요소에 어떻게 여기에 시나리오입니다.자바 : 나는 세트에 의해 그룹에 필요한 목록 세그먼트 : 나는 세그먼트 개체의 목록을</p> <p>: 부동산

** 세그먼트 데이터 **

나는이 형식으로 그룹에 이러한 데이터를 필요
[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) 

:

CodeSample이 세그먼트의 목록을 포함하는 클래스입니다
List<CodeSample> samples = new ArrayList<CodeSample>(); 

.

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)"}]} 
] 

I 세그먼트의 목록이 포함 된 샘플들의 목록을 생성하는 데 필요한 (그룹화).

이 시나리오에 가장 적합한 방법은 무엇입니까?

+1

Java 8을 사용하고 있습니까? – pinkpanther

답변

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

고마워요. 더 짧은 코드! 자바 8 스트림을 사용하는 짧은 코드 이외에 자바 7에서 이것을 코딩하는 것이 더 빠릅니까? –

+0

아니요, Java 7 코드를 그대로 또는보다 효율적으로 작성할 수 있습니다. 그러나 더 길고, 오류가 발생하기 쉽고, 읽고 이해하기가 더 어려울 것입니다. –

+0

고마워요 JB :) –

관련 문제