2012-03-07 5 views
1

저는 Dictionary와 ArrayList를 만들고 있습니다.Java의 Arraylist에서 사전 데이터에 액세스하는 방법은 무엇입니까?

Dictionary testDict, testDict2 = null; 
ArrayList al = new ArrayList(); 

testDict.put ("key1", dataVar1); 
testDict.put ("key2", dataVar2); 
testDict2.put ("key1", dataVar1); 
testDict2.put ("key2", dataVar2); 

al.add(testDict); 
al.add(testDict2); 

여기 내 문제는 사전에있는 데이터에 어떻게 액세스 할 수 있습니까? 예를 들어, 내가 testDict에서 al을 사용하여 key1을 검색하는 방법은 무엇입니까?

많은 사전에 감사합니다 :) 당신이처럼 사전을 유지하려는 거요 확실하지

+0

나는 질문을 받는지 확실하지 않습니다. 적절한 목록 항목을 얻고 평소와 같이 사전에 액세스하십시오. 또는 목록을 반복하면서 각 사전에 키가 있는지 확인하십시오. –

+0

당신이 뭘 하려는지 모르지만, Dictionary javadocs :'참고 :이 클래스는 쓸모가 없습니다. 새로운 구현은,이 클래스를 확장하는 것이 아니라, Map 인터페이스를 구현할 필요가 있습니다. 아마 당신이 대신 HashMaps를 사용해야한다고 생각하고 동일한 키로 여러 값을 가져 오려면 putAll 메서드로 새로운 HashMap을 사용할 수 있습니다 ... 그냥 추측 – jambriz

+0

미안하지만 정말 초보자 유형이라고 생각합니다. 문제. 저는 레이어 상단에 레이어가있는 보드 유형 게임에서 작업하고 있습니다. 각 레이어는 사전이고 보드 자체는 arraylist입니다. 내가 아는 arraylist에서 즉시 데이터에 액세스하는 즉각적인 방법이 없었습니다. 이 질문에 대한 답변이되기를 바랍니다. –

답변

2

Java Docs 모든 사전 개체 (예 : Hashtable 중 하나임)에서 읽을 수 있듯이 요소에 액세스하려면 Object get(Object key) 메서드가 있어야합니다. 당신이 아무데도 당신의 사전 객체를 초기화 없다는 것을,

// first access testDict at index 0 in the ArrayList al 
// and then it's element with key "key1" 
al.get(0).get("key1"); 

참고하고 Dictionary 클래스는 추상적이다 : 당신의 예제에서는 그런 textDict의 항목 key1의 값에 액세스 할 수 있습니다. 그래서 당신은 예를 들어 Hashtable을 사용할 수 있습니다 (또는 대신 HashMap 빠른을 사용하여 동기화 된 액세스가 필요하지 않은 경우)이 같은 목적을 위해 :

testDict = new Hashtable<String, String>(); 

그리고 (두 번째 올바른 제네릭 형식을 사용해야합니다 dataVar의 유형이어야합니다.

+0

입니다. 감사합니다. 당신의 대답은 내가 필요한 답을 모두 주었고, 나에게 더 좋은 길을 가르쳐주었습니다. –

0

하지만 할 수 있습니다 단순히 사전을 통해 루프.

public Data getData(String key) { 
    for(Dictionary dict : al) { 
     Data result = dict.get(key); 
     if(result != null) 
      return result; 
     } 
    return null; 
} 
2

아마이 : testDict 이후

al.get(0).get("key1"); 
2

get(0). 함께 검색 할 수있는 위치에 0 (당신의 ArrayList의 첫 번째 요소)이다.

예 :

Dictionary firstDict = (Dictionary) al.get(0); 
Object key1Data = firstDict.get("key1"); 

시 : 당신이 그것을 사용할 수있는 경우 제네릭이 크게 코드를 향상시킬 수 있습니다.

또 다른 이유는 ... Dictionary이 아닌 이유는 Map입니까?

+0

잠시 동안 자바로 코딩하지 않았습니다. 너 같은 멋진 회원 덕분에 나는 이것이 이상적인 방법이 아니라는 것을 배우고있다. 지도는 –

관련 문제