2013-07-18 3 views
2

Java로 사전을 작성하는 방법이 궁금합니다. 파이썬에는 dictionary = {"key": "something"}과 비슷한 사전 설정이 있다는 것을 알고 있습니다. 두 개의 동기화 된 목록을 만들고 각 목록의 동일한 위치를 사용하여 사전을 모방하는 등 Java에서이 작업을 수행하는 다른 방법이 있음을 알고 있습니다.Java로 사전을 만들려면 어떻게해야합니까?

ArrayList<Object> keys = new ArrayList<Object>(); 
ArrayList<Object> values = new ArrayList<Object>(); 
public void add(Object key, Object value){ 
    keys.add(key); 
    values.add(value); 
} 
// And a subsequent return function 
public Object getValue(Object key) { 
    return values.get(keys.indexOf(key)); 
} 

그러나 이것은 나에게 나쁜 프로그래밍으로 비명을 지른다. 한 문장으로 간단하게 구문을 처리 할 수 ​​있습니까? 주제에 관해 이미 질문 된 대부분의 질문은 거의 끝나지 않아 결과적으로 도움이되지 않습니다.

+11

는'java.util.Map' [실행]을 사용하여 [중요 뭔가] http://docs.oracle.com/javase/7/docs/api/java /util/HashMap.html). – McDowell

+0

왜 데이터베이스를 대신 사용하지 않습니까? 당신이 수천 개의 단어를 다룰 때. – Azad

+1

@Azad : 키/값 쌍 콜렉션에서 사전을 의미합니다. –

답변

8

TreeMap을 포함한다.

import java.util.HashMap; 
import java.util.Iterator; 
import java.util.Map; 
import java.util.Set; 
.... 

Map<String,String> mMap = new HashMap<String, String>(); 
mMap.put("key", "something"); 
Iterator iter = mMap.entrySet().iterator(); 
while (iter.hasNext()) { 
    Map.Entry mEntry = (Map.Entry) iter.next(); 
    System.out.println(mEntry.getKey() + " : " + mEntry.getValue()); 
} 
2

일반적으로 당신과 같이 HashMap를 사용할 수 있습니다 :

Map<String, String> map = new HashMap<String, String>(); 

의 차이는

예 (다른 하나는 레드 - 블랙 트리를 사용하여, 하나는 해시 테이블을 사용) 백엔드에 예를 들어, 이제 파이썬에서 사전과 비슷하게이 map 객체를 사용할 수 있습니다.

map.put("Key", "Value"); 
System.out.println(map.get("Key")); 

(일부는 다른 사람보다 특정 상황에서 사용하는 것이 더 낫다) 자바에서 사전을 이용하기위한 유용한 Map 인터페이스를 구현하는 몇 가지 다른 클래스가 있습니다.

1

간결한지도 작성 (및 기타 유용한 기능)을 위해 나는 Guava을 권장합니다. 특히 ImmutableMap.ofImmutableMap.Builder을 참조하십시오.

예 :

Map<String, Integer> map = ImmutableMap.of(
    "one", 1, 
    "two", 2, 
    "three", 3 
); 

Map<String, Integer> map = new ImmutableMap.Builder<String, Integer>() 
    .put("one", 1) 
    .put("two", 2) 
    .put("three", 3) 
    .build(); 
1

단어 수도 이상의 의미가 포함되어 있습니다. 그래서 당신은 MultiMap을 사용할 수 있습니다.

MultiMap dictionary = new MultiValueMap(); 
    dictionary.put("key", "something"); 
    dictionary.put("key", "Important"); 
    System.out.println("dictionary Value : "+dictionary.get("key")); 

사전 값 : (

관련 문제