안드로이드 개발 질문/답변
(글 수 358)
배열에 관한 공부 중에 궁금증이 생겨서 질문드립니다.
보통 HashMap은 key, value로 저장된 값을 갖고오고
ArrayList는 get(position)이 key가 되어 저장된 값을 불러오는데..
Iterator라는 놈의 정체를 잘 모르겠습니다.
구글에 관련예제들을 보니, hasNext()로 존재여부를 파악하고
next()로 값을 가져오던데.. 궁금하 것은
HashMap, ArrayList, Iterator의 적절한 활용방법에 대해서 개념이 모호합니다.
각각 기능은 파악하고 있지만 실무에서 어느 시점에 어떤 기능을 위해 이 세가지 중 택1하여,
사용하는지.. 설명을 부탁드리고 싶습니다.
이전에 DOM, SAX, PullParser의 장단점에 대해 질문을 했던 적이 있었는데..
이번에도 같은 맥락으로 질문드립니다.^^;
이터레이터는 선형형태의 자료를 순회하는것을 추상화 시킨겁니다.
[모든 순회를 같은 방법으로 하자]라는게 목적인거죠
가령 ArrayList, Set, LinkedList, HashMap의 key들과 값들 등을 순회할때 이터레이터로 뽑아서 순회시키면 해당부분의 코드는 자료구조가 변하더라도 코드를 수정할 필요가 없죠 그게 아니더라도 Java 5 이상에서는 자동으로 배열과 컬렉션들을 이터레이터로 뽑아주는데 사용법은
for (String value : values) {
System.out.println(value);
}
물론 인덱스 값이 필요하면 이렇게 쓸 수 없지만 그렇지 않을 경우 유용하게 사용 가능합니다.
자바 컬렉션은 필요에 따라 골라서 사용하시면 되는데
어떤 특정한 키값으로 자료를 찾고자 할때는 Map을 이용하고
자료를 중복허용 하고 저장하려면 List
자료를 중복허용하지 않고 저장하려면(집합) Set 을 이용합니다.
이런 자료구조 앞에 Tree가 붙는것은 자료를 저장할 때 정렬까지 해줍니다.