너무 기본적인 사항이라 정리하는 것이 이상할 지 모르나, 모든 자료는 언제든 찾게 될 일이 있을지 몰라 정리해 둔다.
아래 같은 경우 주의할 점은 ArrayList 의 add() 이다. add() 는 내부적으로 arraycopy 를 호출한다. 그래서 만약 아래처럼 하나는 ArrayList 에 넣고, 하나는 map 에 넣어서, 나중에 map 을 indexing 이 이용하려고 할 때는 문제가 생긴다.
각자 다른 Object 를 가리키고 있기 때문이다. 그러므로 ArrayList 와 같이 사용하려 한다면, 아래처럼 ArrayList 의 index 값을 가지고 사용하는 것이 더 나은 방법인 듯 하다.
참고로 HashMap 의 put() 은 copy 를 하지 않는다.
private final ArrayList<Article> mArticles;
private Map<String, Integer> mHmap = new HashMap<String, Integer>();
private Map<String, Article> mtest = new HashMap<String, Article>();
public void addItem(Article article) {
mArticles.add(article);
mHmap.put(article.title1, mArticles.size()-1);
mtest.put(article.title1, article); // 문제의 소지가 있다.
}
public void setChecked(String title, int checked) {
int i = mHmap.get(title);
mArticles.get(i).checked = checked;
}
댓글 없음:
댓글 쓰기