2012-11-05 5 views
0

일부 키 - 값 쌍을 포함하는 목록과 많은 값을 포함하는 배열이 있다고 가정 해 보겠습니다. 내가 확인하고 싶은 무엇키 - 값 쌍의 목록에서 동일한 키로 값 확인

public boolean hasSameKey(List<Map.Entry<Key, Value>> list, Value ... values) { 
    return ?; 
} 

은 그 values 모든 값이 동일한 키list에 항목이있는 경우. Map<Key, List<Value>>이 작업을 수행 할 수 있습니다 :

public boolean hasSameKey(Map<Key, List<Value>> multimap, Value ... values) { 
    for(Key key : multimap.keySet()) { 
     if (map.get(key).containsAll(Arrays.asList(values))) { 
      return true; 
     } 
    } 
    return false; 
} 

당신이 Rohit 자이나교와 같은과 multimap을 사용하여 제안 된 경우

명확히하려면 편집 목록의 각 키는 여러 값

+4

'지도'인 경우 왜 '지도 '을 사용하지 않습니까? –

+0

맵에 각 값에 대해 하나의 키가 이미 존재하거나 각 값에 동일한 키가 있다는 것을 의미합니까? –

+0

@AdamArold -지도 은 키당 하나의 값만 저장할 수 있습니다. – Theodor

답변

3

귀하의 질문에서 얻은 것으로부터, 먼저 Map<Key, List<Value>>을 첫 번째 매개 변수로 사용하기 위해 메소드 서명을 약간 변경합니다.

그럼 당신은 다음과 같이 진행할 수 있습니다 : -

public boolean hasSameKey(Map<Key, List<Value>> map, Value... values) { 

    for (Key key: map.keySet()) { 
     if (map.get(key).containsAll(Arrays.asList(values))) { 
      return true; 
     } 
    } 
    return false; 
} 
  • map.get(key) - 그 해당 키에 대한 List<Value>를 가져옵니다.
  • List#containsAll 메서드는 특정 collection의 모든 요소가 해당 목록에 있는지 여부를 확인합니다.
0

와 키가있을 수 있습니다 이렇게하면 ValueList에 존재하는지 여부를 Map에 확인할 수 있습니다.