2016-09-26 6 views
0

Java 8에서이 유형의 코드를 작성하는 방법은 무엇입니까? 스트림을 사용하여 Java8에서 작성하고 싶습니다. 이 방법이 있습니까?Java 8의 목록에서 첫 번째 요소 찾기

List<SomeDTO> someDTOList = sample.getSomeDTO(); 
int a=0; 
for(SomeDTO sample : someDTOList ){ 
    String someElement = sample .getSomeElement(); 
    if(someElement.equals("Condition1"){ 
     a=1; 
     break; 
    } 
    if(someElement.equals("Condition2"){ 
     a=2; 
     break; 
    } 
    if(someElement.equals("Condition3"){ 
     a=3; 
     break; 
    } 
} 
+1

샘플 작업은 무엇입니까? whist가 작동하지 않습니까? 귀하의 질문을 자세히 설명하십시오 – proton

+2

다른 사람들에게 당신을 위해 임무를 수행하도록 요청하기보다는 직접 작성하고 실제 문제가 생기면 여기에 질문하십시오. – andrel

답변

2

당신은 map, mapToInt, filterfindFirst의 조합으로 그것을 할 수 있지만, 그렇게 꽤되지 않습니다 :

홀거 제안으로
int a = 
    sample.getSomeDTO() 
      .stream() 
      .map(SomeDTO::getSomeElement) 
      .mapToInt(e -> { 
       if (e.equals("Condition1")) 
        return 1; 
       else if (e.equals("Condition2")) 
        return 2; 
       else if (e.equals("Condition3")) 
        return 3; 
       else 
        return 0; 
      }) 
      .filter(a -> a > 0) 
      .findFirst() 
      .orElse(0); 

, 당신은에 의해 덜 추한 할 수 있습니다 if 문을 삼항 조건식으로 바꾸기 :

int a = 
    sample.getSomeDTO() 
      .stream() 
      .map(SomeDTO::getSomeElement) 
      .mapToInt(e -> e.equals("Condition1") ? 1 : e.equals("Condition2") ? 2 : e.equals("Condition3") ? 3 : 0) 
      .filter(a -> a > 0) 
      .findFirst() 
      .orElse(0); 
+0

'.mapToInt (e -> e.equals ("Condition1")? 1 : e.equals ("Condition2")? 2 : e.equals ("Condition3")? 3 : 0)' – Holger

+0

@Holger 훨씬 더 좋다 :) – Eran

관련 문제