2014-04-08 3 views
0

저는이 문제와 관련하여 StackOverflow를 검색해 왔습니다.두 개의 ArrayList를 TreeMap에 넣으십시오.

내가

arraylist1이 문자열 arraylist2는 정수를 보유하고있다 두 배열 목록을 만들어 말할 수 있습니다.

주 -이 두 arraylists에 추가했습니다. 각 색인의 값은 다른 값과 관련이 있습니다.

의미. arraylist1 = "Name"의 인덱스 1을 말할 수 있습니다. arraylist2 = 3의 인덱스 1은 트리 메핑이 값 ("Name", 3)을 넣도록 TreeMap (키순 정렬)에 물건을 넣고 싶다는 점에서 관련이 있습니다.

내 문제 -

TreeMap<String, Integer> mymap = new TreeMap<String, Integer>(); 
for(String s : arraylist1) { 
    for(Integer v : arraylist2) { 
      mymap.put(s, v); 
내가 테스트를 위해 임의 물건을 잔뜩 추가 한 경우 이것에 대한 문제가

,

arraylist1.add("h"); 
    arraylist1.add("i"); 
    arraylist1.add("e"); 
    arraylist2.add(1); 
    arraylist2.add(3); 
    arraylist2.add(2); 

그리고 루프 내 결과로 나올 것 않았다 ...

Key e Value: 2 
Key h Value: 2 
Key i Value: 2 

이는 키별로 정렬하는 문제를 해결합니다. 그러나 문제는 Integer arraylist의 마지막 값인 arraylist2 만 TreeMap에 넣는 것입니다.

답변

4

동시에 두 목록을 반복하지 않으시겠습니까??

for (int i = 0; i < list.size(); i++) { 
    map.put(list1.get(i), list2.get(i)); 
} 

현재, 각 키에 대해 두 번째 맵을 반복하고 두 번째 목록의 값을 삽입하고 있습니다. 지도에는 키당 하나의 값만 포함되므로 맵은 각 키의 두 번째 목록에서 최종 값을 얻습니다.

이 두 값이 본질적으로 연결되어있는 경우, 처음부터이 두 값을 저장 (an existing) Pair 개체를 생성하는 것이 좋습니다. 표준 맵을 사용할 때의 문제점은 키당 하나의 값만 저장할 수 있다는 것입니다. 예 : 당신은 저장할 수 없습니다 (A,B)(A,C)

+0

감사합니다. 이 페이지로 돌아 가기 전에 실제로 문제를 해결했습니다. 그러나 stackoverflow를 존중하기 위해 솔루션을 받아들이려면 몇 분 정도 기다려야합니다. – user3511611

0

음 fark, 당신이 그것을 삭제하기 전에 삭제 질문이 입력했지만, 당신이 그것을 삭제 한 후 때까지 완료되지 않았습니다 :

을 내가 잘 모르겠어요 I 귀하의 질문을 완전히 이해하지만 다음을 고려하십시오.

  • 게임의 논리를 담당하는 게임 클래스 만들기.
  • 게임과 상호 작용하는 플레이어 개체 만들기.
  • 플레이어는 이동하려고 할 때 Game의 move(Piece piece, Position position) 메서드를 호출하지만 매개 변수를 사용합니다.
  • 부울을 반환하고 이동이 유효하면 true를, 그렇지 않으면 false를 반환합니다.
관련 문제