배열은 동일 자료형의 데이터 묶음이며 쉽게 생성하고 사용할 수 있지만, 저장할 수 있는 객체 수가 배열을 생성할 때 결정되기 떄문에 불특정 다수의 객체를 저장하기에는 문제가 있다.
또한 자료처리에 불편함이 있다. 추가,삭제,수정 기능이 제공이 되지 않아 개발자가 직접 구현을 해야 한다.
이러한 배열의 문제점을 해결하고 객체들을 효율적으로 추가, 삭제, 검색 할 수 있도록 java.util 패키지에 컬렉션과 관련된 인터페이스와 클래스들을 포함시켜 놓았다. 이것을 총칭해서 컬렉션 프레임워크라고 부른다.
컬렉션 프레임워크: 다른 자료형도 묶음(참조형만) 이 가능하며 크기가 가변적이다. 또한 자료처리가 편리하여 추가기능, 삭제기능, 수정기능제공이 된다.
List - 인덱스가 제공, 중복저장허용, 저장순서 유지
Set - 객체를 중복 저장불가, 하나의 null만 저장,저장순서가 유지되지 않음
Vector - 스레드에 동기화 됨, 처리속도 느림
ArrayList - 스레드에 동기화 되지 않음, 처리속도빠름
HashSet - hashCode 값으로 요소 iteration
TreeSet - 요소들을 정렬
Hashtable - 스레드 동기화됨, 처리속도 느림
HashMap - 스레드 동기화 안됨, 처리속도 빠름
인터페이스 분류 | 특징 | 구현 클래스 | |
Collection | List | - 순서를 유지하고 저장 - 중복저장 가능 |
ArrayList,Vector, LinkedList |
Set | -순서를 유지하지 않고 저장 -중복 저장 안됨 |
HashSet, TreeSet | |
Map | - 키와 값의 쌍으로 저장 - 키는 중복 저장 안됨 |
HashMap, Hashtable, TreeMap, Properties |
ArrayList 와 HashSet 비교
public class CollecionTest {
public static void test(Collection c) {
c.add("One");
c.add(new Integer(2)); // Object타입으로 upcasting됨
c.add(3); // int타입코드(기본형)는 object(참조형) upcasting 불가,
// Autoboxing됨, 컴파일시
// 컴파일시 c.add(new Integer(3));로 변경됨
c.add(new Integer(2));
System.out.println("저장된 요소 개수" + c.size());
System.out.println("저장된 요소들");
for (Object o : c) {
System.out.println(o); // o.toStrin() 자동호출됨
}
}
public static void main(String[] args) {
Collection c;
c = new ArrayList();
test(c);
c = new HashSet();
test(c);
}
}
결과값
저장된 요소 개수4
저장된 요소들
One
2
3
2
저장된 요소 개수3
저장된 요소들
2
3
One
'java' 카테고리의 다른 글
Io패키지 FileReader (0) | 2021.10.28 |
---|---|
java_15_Io 패키지 - 입력스트림 (InputStream ) (0) | 2021.10.28 |
java_13_java.lang과 java.util 패키지 & toString(), equals() (0) | 2021.10.26 |
java_12_예외처리2 (예외 처리 코드 ,다중catch ,catch순서,예외떠넘기기) (0) | 2021.10.24 |
java_3_반복문(for문, while문, do-while문) (0) | 2021.10.23 |