Java list를 map으로 변환 하려고 합니다

조회수 87회

List를 map으로 변환 하고 싶습니다.. 결과값이 리스트다 보니 {a=1,b=2},{a=3,b=5} 이렇게 나옵니다

For문을돌려 보면

For(int i=0; i<= list.size(); i++) { Map.put(a, list.get(i)) Map.put(b,list.get(i)) } 이런식으로 for문을 찍으면 두번째 리스트 값만 나오게 되는데 결과값 {a=3,b=5}

a=1 b=2 a=3 b=5 이렇게 츨력하려면 어떻게 구현을 해야 할지요??

1 답변

  • map 자료형은 key : value 의 쌍으로 이뤄져 있습니다. key 를 'a' 로 'value'를 1로 설정한 다음 'a'에 대해 3으로 설정하면 value 값이 바뀌는 거지 'a'에 대해 추가 되는게 아닙니다.

    하시려면 'a'라는 key 값에 value로 List 자료형을 두시면 어떨까요?

    // java code
    length = 0
    for(int i = 0; i < list.size(); i++) {
    // a,b key값에 동시에 들어가는거 보니 list에는 
    // list 값이 들어있다 가정하겠습니다 ;; 
    // [ [1,3], [2,5] , ...]
     // a : [1,3]
        if(!map.containsKey('a') ) {
            List<Integer> nums = new ArrayList<Integer>();
            nums.add(list.get(i).get(0));
            map.put('a',  nums);
        }else{
            map.get('a').add(list.get(i).get(0));
        } 
    // b : [2,5]
        if(!map.containsKey('b') ) {
            List<Integer> nums = new ArrayList<Integer>();
            nums.add(list.get(i).get(1));
            map.put('b',  nums);
        }else{
            map.get('b').add(list.get(i).get(1));
        } 
    
        length += 1
    }
    
    for(int i = 0; i < length; i++) {
        System.out.println("a="+map.get('a').get(i)+" , "+ 
        "b="+map.get("b").get(i));
    }
    // 출력결과
    // a=1,b=2
    // a=3,b=5
    

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.