2017-04-26 1 views
4

으로 :JAVA 8을 사용하여지도에서 첫 번째 키 값을 얻는 방법은 무엇입니까? 지금 내가 뭐하는 거지에 대한

Map<Item, Boolean> processedItem = processedItemMap.get(i); 

     Map.Entry<Item, Boolean> entrySet = getNextPosition(processedItem); 

     Item key = entrySet.getKey(); 
     Boolean value = entrySet.getValue(); 


public static Map.Entry<Item, Boolean> getNextPosition(Map<Item, Boolean> processedItem) { 
     return processedItem.entrySet().iterator().next(); 
    } 

는 java8이 작업을 수행 할 수있는 청소기 방법이 있습니까? 당신이

Optional<Map.Entry<Item, Boolean>> firstEntry =  
     processedItem.entrySet().stream().findFirst(); 

은 분명히 HashMap 더 순서가 없습니다 여기 findFirst이 필요한 것처럼로 findFirst 다른 통화에 대한 다른 결과를 반환 할 수 있도록

답변

7

나는 당신의 방법으로 두 가지 문제 참조 : 맵이 빈 상태 (empty)의 경우에 예외가 발생합니다

  • HashMap는, 예를 들어, 어떤 순서가 없다 - 그래서 당신의 방법은 getAny() 정말 더를 getNext()보다

    //if order is important, e.g. with a TreeMap/LinkedHashMap 
    map.entrySet().stream().findFirst(); 
    
    //if order is not important or with unordered maps (HashMap...) 
    map.entrySet().stream().findAny(); 
    

    Optional 반환 : 당신이 중 하나를 사용할 수있는 스트림으로

.

+0

네, TreeMap으로 변경합니다. 선택 항목 인 – user3407267

+0

에서 항목을 가져 오는 방법은 .get()을 사용할 수 있습니까? – user3407267

+0

@ user3407267'if (opt.isPresent()) Entry e = opt.get(); else doSomethingElse();'예를 들어. 당신이 필요로하거나 원하는 것에 따라 다른 방법이 있습니다. – assylias

6

이 보인다. 아마도 더 적합한 방법이 findAny 일 것입니다.