2013-11-26 8 views
0

기본적으로 해시 맵에 두 개의 값을 저장하고, 사전을 시도했으며 그로 인해 실패했습니다. 어쨌든, 여기 있습니다.해시 맵에서 정보 반환

private HashMap<Integer, Integer> dropTable = new HashMap<Integer, Integer>(); 

그럼, 내 코드에서 나는 내가 할 노력하고있어하면 항목 ID가 itemDrops 배열에 반환되는 것 인로 (이 방식으로 값을 저장하고, 기본적으로이

for(int npc = 0; npc < 10; npc++){ 
     dropTable.put(npc, Constants.itemDrops[npc][1]); 
    } 

이 나는이 정보를 반환 할 때 지금, 내가 그것을 알아낼 수있는 방법,

<ArrayIndex, ItemID> 

.

여기

는 시간이다 이 값을 반환하려고 시도했습니다.

 for(int i = 0; i < dropTable.size(); i++) { 
     System.out.println("NPC: " + dropTable.get((Integer)i)); 
    } 

그러나 null은 반환하고 보면서, 필요한 것을 제공하지 않습니다.

HashMap의 색인을 기반으로 HashMap에서 Key/Value를 개별적으로 검색하는 방법은 무엇입니까? (해시 맵에 색인이있는 경우에도 그 느낌은 내가 누리고있는 것입니다.)

============= 내 해시 맵 아이디어입니다.

<Integer>, <Integer> Index: 0 
<Integer>, <Integer> Index: 1 
etc... 
+0

해시 맵을 사용하는 방법이 없습니다 –

+0

가능한 방법을 제공해 주시겠습니까? –

답변

0

HashMaps는 정렬되어 있지 않으며 인덱스가없고 반복 중에 순서 기능이 반환되지만 삽입 순서가 보장되지는 않습니다.

이러한 기능 중 일부를 제공하는 다른지도 개체를 사용할 수 있습니다. TreeMap은 예를 들어 정렬됩니다.

모든지도는 반복자에서 키 집합을 제공하는 keySet() 메서드를 제공하며 이러한 객체를 반복하는 Collection (Collection)은 원하는 동작을 제공 할 가능성이 높습니다.

0

먼저 해킹 할 필요가있는 데이터 구조는 해시 맵입니까?

간단하지 않은 경우 List을 사용하고 get(index) 메서드를 사용하십시오.

그렇다면 Map 임 플리 멘 테이션 (예 : LinkedHashMap)을 사용하여 삽입/삽입 순서를 유지할 수 있습니다. 그런 다음 해당 맵의 values()에 전화하여 향상된 for-loop를 사용하여 반복 할 수 있습니다. 또는 인덱스 액세스가 필요한 경우 List를 작성하고 다시 전달한 콜렉션을 전달할 수도 있습니다.

0

을 사용하여 인덱스에 따라 개체를 얻을 찾고 있다면 - 당신이 정말 찾고있는 것은 ArrayList입니다 - 인덱스의 액세스를 허용하고, 기본적으로 dynamic array이다.

동일한 색인에 "첨부 된"객체를 원할 경우 array 목록의 요소로 Pair (아파치 공유지에서)을 사용하여 2 개의 ArrayLists (각 객체 유형마다 하나씩)를 사용할 수 있습니다.

+0

내가 사용하고 있던 원래의 방법은 한 쌍의 배열리스트를 포함하고 있었고, 나는 수백 개의 변수처럼 보이는 것을 사용하지 않고 단순화하려고했다. –

관련 문제