List
: 순서 O, 중복 O
Set
: 순서 X, 중복 X
Map
: key : Value, 순서 X, key는 중복 X / Value는 중복 O
hasNext( )
: 남아 있는 요소가 있는지 확인하는 메소드 (유/무에 따라 true / false를 반환)next( )
: 다음 요소를 꺼냄
Set을 이용한 Iterator
// 선언
Set<String> set = new HashSet<String>();
// 요소 추가
set.add("제육");
set.add("닭갈비");
set.add("돈까스");
set.add("김치찌개");
// set를 조회할 반복자 iterator
Iterator<String> itr = set.iterator(); // itr은 주머니에 들어가는 손
while(itr.hasNext()) {
String element = itr.next();
System.out.println(element);
}
// 닭갈비
// 제육
// 김치찌개
// 돈까스
keySet()
메소드로 key만 Set에 저장// 선언
Map<String, Object> map = new HashMap<String, Object>();
// 요소 추가
map.put("page", 1);
map.put("column", "제목");
map.put("query", "날씨");
// key만 Set에 저장
Set<String> keys = map.keySet();
// Iterator를 이용한 순회
Iterator<String> itr = keys.iterator();
while(itr.hasNext()) {
String key = itr.next();
Object value = map.get(key);
System.out.println(key + " : " + value);
}
// query : 날씨
// column : 제목
// page : 1
java.util
public static void printMovies(List<String> list) {
for(int i = 0, size = list.size(); i < size; i++) {
System.out.print(list.get(i));
if(i < size - 1) { // size - 1 : 마지막 요소의 인덱스
System.out.print(" → ");
}
}
System.out.println();
}
public static void main(String[] args) {
List<String> movies = new ArrayList<String>();
movies.add("아바타");
movies.add("쇼탱크탈출");
movies.add("명량");
movies.add("에일리언");
movies.add("한산");
// Iterator를 이용해 순환
printMovies(movies); // 아바타 → 쇼탱크탈출 → 명량 → 에일리언 → 한산
// movies 리스트를 오름차순 정렬
Collections.sort(movies);
printMovies(movies);
// movies 리스트를 내림차순 정렬
Collections.reverse(movies);
printMovies(movies);
// 특정 요소의 인덱스 반환
// 이진 검색 (binary search)을 이용하므로 검색 속도가 매우 빠름
// 단, 크기순으로 정렬이 되어 있어야 한다.
int idx = Collections.binarySearch(movies, "아바타");
System.out.println(idx); // 2