컬렉션 프레임워크 (2)

김예지·2023년 1월 5일
0

Iterator , ListIteator

컬레션 프레임워크에서는 컬렉션의 저장된 요소들을 읽어오는 방법을 표준화하였다
컬렉션에 저장된 데이터를 접근하는데 사용되는 인터페이스 종류
iterator - 컬렉션에 저장된 요소를 접근하는데 사용되는 인터페이스(단방향)
Listiterator - iterator에 양방향 조회기능 추가 (List를 구현한 경우에만 사용 가능)

컬렉션 종류마다 구조가 다르므로, 데이터를 읽어오는 구조가 다르다 이 때 다른 종류마다의 데이터를 읽을 때 이처럼 표준화가 되어있다면 코드변경에 유리하다

List list = new ArrayList(); // 다른 컬렉션으로 변경할 때는 이 부분만 고치면 된다
Iterator it = list.iterator();

while(it.hasNext()){ // hasNext()로 읽어올 요소가 있는지 확인한다 
System.out.println(it.next()) // 다음 요소를 읽어옴 
}

ArrayList list = new ArrayList();
Collections co = new ArrayList();

컬렉션을 참조변수로 가지게 되면 다른 배열로 사용할 때 코드 전체를 확인하지 않고 new 연산자만 교체해주면 사용이 가능하다(코드 수정에 용이) 만약 참조변수를 ArrayList로 가지게 된다면 ArrayList에만 사용가능한 메소드들을 모두 교체해줘야하는 번거로움이 생긴다 Collections에 공통된 메소드들만 사용할 시에는 두 번째 형식으로 객체 생성하는 것이 더 좋은 방법이다

Map에 iterator 사용하기

Map map = new HashMap();
Iterator it = map.entrySet().iterator();

Map인터페이스는 컬렉션을 상속받지 않았기 때문에 Set의 entrySet()와 함께 사용해야 한다

Comparator , Comparable

정렬기준을 제공해주는 인터페이스
comparable - 기본 정렬기준을 구현하는데 사용
commparable - 기본 정렬기준 외에 다른 기분으로 정렬하고자 할 때 사용

HashSet

Set 인터페이스를 구현한 가장 대표적인 컬렉션이며 Set의 특징처럼 순서가 없고, 중복을 허용하지 않는다

HashSet set = new HashSet();
set.add(new Person("David , 10));
set.add(new Person("David , 10));

위에 처럼 공통의 값이 들어간 객체가 있을시에 equals , hashConde 메소드를 오버라이딩을 해줘야만 같은 값으로 인식하여 하나만 추가가 된다 만약 오버라이딩이 안 되어있다면 둘 다 배열에 추가되니 오버라이딩을 꼭 기억하자

profile
나만의 방식을 찾아가는 신입신입 개발자

0개의 댓글