이것이자바다 15장

다온·2023년 4월 25일

컬렉션 프레임워크

컬렉션 프레임워크

다수의 객체를 저장하고 효율적으로 추가, 삭제, 검색할 수 있도록 구현된 인터페이스와 클래스

주요 인터페이스 : List, Set, Map

배열도 다수의 객체를 저장할 수 있다. 하지만 저장할 수 있는 크기가 고정적이며, 중간 인덱스의 자료를 삭제했을 때 빈 곳이 생기기도 한다. 따라서 고정적 크기의 연속된 객체를 저장하는 것은 좋지만, 유동적인 크기를 갖는 객체 저장에는 적합하지 않을 수 있다.

List

객체를 인덱스로 관리하고, 객체 자체를 저장하는 것이 아니라 각 인덱스에 객체의 주소를 저장한다.
순서를 유지하고 저장하고, 중복저장이 가능하다.

ArrayList : new ArrayList<T>()처럼 생성자로 생성이 가능하나, 리스트 중간에 데이터를 추가하거나 삭제하는 경우, 해당 인덱스를 기준으로 데이터가 밀려나거나 당겨지는 현상이 일어난다.

Set

중복 데이터가 저장되지 않고, 순서를 보장하지 않는다.
순서를 유지하지 않고 저장하고, 중복저장이 불가능하다.

HashSet : 동일 객체를 판단할 때, hashCode() 메소드를 통해 해시 코드를 얻어낸 뒤에 이미 저장된 객체들의 해시코드와 비교하고, 동일한 해시코드가 있다면 equals() 메소드로 두 객체를 비교해서 true가 나오면 마침내 동일한 객체로 판단한다.

Map

키(key)와 값(value)의 쌍으로 저장되고, 키는 중복저장이 불가능하다.

HashMap : 키 타입의 객체가 있다면 hashCode()equals() 메소드를 둘 다 확인 후에 같은 객체라고 판단하고, 키와 값은 primitive type이 올 수 없다.

profile
좋아하는게 너무 많다 !

0개의 댓글