다른 데이터 구조를 찾는 것보다 이 고유 한 인 다른 키를 생각해보십시오. 이것은 소프트웨어 개발에서 매우 공통적 인 문제입니다. 현실 세계의 많은 개념들이 우리가 원하는만큼 독특하지 않기 때문입니다. 이름 (사람뿐만 아니라 장소 및 사물)은 고전적인 예입니다.
여러 가지 잠재적 인 해결책이 있지만 일반적인 것은 각 고유하지 않은 식별자를 고유 한 식별자로 할당하고 을 키로 사용하는 것입니다. 당신은 지금뿐만 아니라 사람의 ID를 조회 할 수 있어야하기 때문에
이
Map<Integer, Person>
이것은 단지 당신이 그들의 이름을 알고 가정, 물론 문제를 오프로드 : 같은지도가 보일 수 있습니다.
Map<String, Set<Integer>>
여기서 키는 이름이고 값은 해당 이름이있는 ID 세트입니다. 그런 다음 사용자에게 애플리케이션을 선택하도록 요청하는 등 필요한 경우 더욱 명확하게 구분할 수있는 애플리케이션 별 방법을 사용해야합니다. 이 두 번째 Map
은 알파벳 순서로 이름이 필요하거나 Person
을 Comparable
으로 구현하도록 선택할 수있는 경우 TreeMap
이 될 수 있습니다.
Guava 라이브러리는 Map<K, Set<V>>
과 같은 데이터 구조를 사용하기가 훨씬 쉬운 Multimap
인터페이스를 제공합니다.