java - 자바 해시테이블 구현




Java로 해시 테이블을 만들려면 어떻게해야합니까? (5)

Java에서 해시 테이블 (또는 연관 배열 ...)을 만드는 가장 직접적인 방법은 무엇입니까? 내 google-fu는 몇 가지 예를 보여 주었지만이를 수행하는 표준 방법이 있습니까?

각 쌍의 객체에 대해 add 메소드를 개별적으로 호출하지 않고 키 -> 값 쌍 목록을 테이블에 채우는 방법이 있습니까?


그리고 각 쌍의 객체에 대해 add 메소드를 개별적으로 호출하지 않고 키 -> 값 쌍 목록을 테이블에 채우는 방법이 있습니까?

귀하의 질문에 대한 하나의 문제는 귀하의 데이터가 어떤 형태로 시작해야하는지 언급하지 않는다는 것입니다. 쌍의 목록이 Map.Entry 객체의 목록 일 경우 매우 쉽습니다.

이것을 버리기 위해 Hashtable의 확장 인 java.util.Properties라는 이름의 클래스가있다. 그것은 오직 문자열 키와 값만 필요하며 파일이나 스트림을 사용하여 데이터를로드하고 저장할 수 있습니다. 읽고 쓰는 파일의 형식은 다음과 같습니다.

key1=value1
key2=value2

나는 이것이 당신이 찾고있는 것이라는 것을 모른다. 그러나 이것이 유용 할 수있는 상황이있다.


또한 Map과 Hashtable이 Java 5 이상에서는 Collections 프레임 워크의 다른 클래스와 마찬가지로 일반적이라는 것을 잊지 마십시오.

Map<String, Integer> numbers = new HashMap<String, Integer>();
numbers.put("one", 1);
numbers.put("two", 2);
numbers.put("three", 3);

Integer one = numbers.get("one");
Assert.assertEquals(1, one);

이중 중괄호를 사용하여 데이터를 설정할 수 있습니다. 당신은 여전히 ​​add 나 put을 호출하지만 덜 추해 보인다.

private static final Hashtable<String,Integer> MYHASH = new Hashtable<String,Integer>() {{
    put("foo",      1);
    put("bar",      256);
    put("data",     3);
    put("moredata", 27);
    put("hello",    32);
    put("world",    65536);
 }};

import java.util.HashMap;

Map map = new HashMap();

에드먼드가 한 말.

항상 .add를 부르지 않는 것은 관용적이지 않습니다. 당신이 정말로 원한다면 할 수있는 다양한 해킹이있을 것입니다 (배열에 저장하고 루핑하는 것). 그러나 나는 그것을 권장하지 않습니다.





hashmap