2013-07-30 2 views
1

현재 프로젝트에서는 다양한 유스 케이스에 문자열 쌍을 사용해야합니다. 현재 Apache Lang3 Pair 튜플을 사용하여이 문제를 처리하고 있습니다. 현재 구현은 우리가 네이티브 자바 솔루션을 찾는 것이 가장 좋은 것입니다 문자열이 쌍을 노출해야하기 때문에 결정했다 팀의 나머지 부분과 논의 후 다음문자열 쌍을 추적하십시오.

private List<Pair<String, String>> configParameters; 
private List<Pair<String, String>> sensorReadingMeasures; 

것 같습니다.

자바 유틸리티 라이브러리에서 AbstractMap을 사용하여 솔루션을 찾으려고 시도했지만 실제로 인스턴스화 할 수있는 행운이 없었으며 Google 검색은 나를 돕는 데 많은 정보를 제공하지 않았습니다. 내가 수행하여 위를 다시 시도

,

AbstractMap<String, String> pair = new AbstractMap<String, String>(); 

나는 키 집합() 함수를 사용하여 각각의 GET() 함수에 의해 필요한 정보를 당겨 필요한 정보를 당길 수있을 것입니다 핵심 가치.

내 인스턴스화 문제 외에도 동일한 기능을 사용하는 것이 비효율적 인 것처럼 보입니다. 더 좋은 옵션이 있는지 궁금합니다. 누군가가 AbstractMap을 적절하게 인스턴스화하는 방법에 대한 예제를 제공해 줄 수없는 경우.

+1

사용'지도 <문자열, 문자열>'참고로, 및 인스턴스화 -'의 HashMap <문자열, 문자열>()'를. –

+2

'Map'을 사용할 계획이라면'Map pair = new HashMap ();'(또는'LinkedHashMap' 또는'TreeMap'과 같은 다른'Map' 구현체) . 최상의 콜렉션을 선택할 수 있도록 기능 요구 사항을 게시하는 것이 좋습니다. –

답변

2

각 쌍의 두 문자열 중 하나가 고유 한 경우 AbstractMap을 사용하라는 제안에 따라 Map<String,String>을 반환하는 API를 노출하고 해당 인터페이스에 대해 원하는 구현을 사용하는 것이 좋습니다 (예 : , LinkedHashMap<String,String>).

Map<String,String> getAllPairs() { 
    ... 
} 
... 
for (Map.Entry<String,String> pair : myClass.getAllPairs()) { 
    // You can use pair.getKey() and pair.getValue() here 
} 
0

당신이 단지 POJO를 사용할 수 없습니다 : 클래스의

사용자 Map.Entry<String,String>를 사용하는 대신 각 키에 대한 get를 호출하여 Map에서 String의 쌍을 당길 수있을 것입니다 :

public List<Tuple> tuples = new ArrayList<Tuple>(); 
:

public class Tuple { 
    public String oneString; 
    public String otherString; 
} 

당신은 그 목록을 가질 수 있습니다

또는 당신은 만약 당신이 검색 할 수 있습니다 그들의 Collection의 수 :

@Override 
public boolean equals(Object obj) { 
     // Code to handle non-Tuples and null goes here 
     // Code to handle null oneString values goes here (if you allow that) 
     return ((Tuple)that).oneString.equals(oneString); 
} 

@Override 
public int hashCode() { 
     // handle null oneString values here 
    return oneString.hashCode(); 
} 
관련 문제