Array에 HashMap을 추가하는데 값이 제대로 안들어 갑니다.
조회수 452회
ArrayList<HashMap<String,String>> all_Button_list = new ArrayList<>();
HashMap<String, String> all_Button_hm = new HashMap<>();
for(int i=1;i<chain+1;i++){
for(int j=1;j<y+1;j++){
for(int k=1;k<x+1;k++){
all_Button_hm.clear();
all_Button_hm.put("index", i+" "+j+" "+k);
all_Button_list.add(all_Button_hm);
}
}
}
Log.d("test",all_Button_list.toString());
일단 코드는 위와 같습니다. for문으로 돌면서 각각의 인덱스를 해시맵에 저장후 그 해시맵들을 나열하는 Array를 만들었는데요, for 다돌고 밑에 로그찍혀 나오는 것을 보면
[{index=5 8 8}, {index=5 8 8}, {index=5 8 8}, {index=5 8 8}, {index=5 8 8},...
식으로 나옵니다. 값이 다 똑같은 해시맵이 들어가 있습니다.
그래서 코드를 아래처럼 아예 HashMap 객체를 for문 돌때마다 새로 생성하니 일단 됩니다.
ArrayList<HashMap<String,String>> all_Button_list = new ArrayList<>();
for(int i=1;i<chain+1;i++){
for(int j=1;j<y+1;j++){
for(int k=1;k<x+1;k++){
HashMap<String, String> all_Button_hm = new HashMap<>(); //객체 for 돌때마다 생성
all_Button_hm.put("index", i+" "+j+" "+k);
all_Button_list.add(all_Button_hm);
}
}
}
Log.d("test",all_Button_list.toString());
[{index=1 1 1}, {index=1 1 2}, {index=1 1 3}, {index=1 1 4}, {index=1 1 5}, {index=1 1 6},...
그러나 저렇게 객체를 계속 생성하면 성능에 문제가 되지는 않을까요? 또한 첫번째는 왜 작동이 이상하게 되는지 궁금합니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력