컬렉션이란 ?
데이터의 집합 , 그룹
컬렉션들은 이를 구현하는 클래스를 정의하는 인터페이스를 제공한다.
ArrayList
ArrayList 는 interface 인 List 구현(implements) 한 클래스이다
그렇기 때문에 선언할 때 List로 업캐스팅을 해서 선언을 많이 한다.
List<String> listA = new ArrayList<String>();
//이렇게 하면 List 클래스를 참조하는 listA이기 때문에
나중에 다른 List 구현체로 변경할 수 있기 때문에 유연성이 높아진다.
생성자)
- new ArrayList() : 기본 크기가 10인 배열 생성
- new ArrayList(기본크기) : 기본 크기를 지정 (배열이 다 차면 기본크기만큼 사이즈가 증가함)
- new ArrayList<제네릭>() : 배열 값의 타입을 지정
ArrayList 의 대표적인 메소드
- .add((index) , value) : 순서대로 리스트를 추가 , 배열 사이즈 초과 시 초기 설정된 사이즈만큼 자동으로 사이즈가 증가함.(1.5배 정도)
- .get(index) : 해당 인덱스의 값 반환
- .set(index, value) : 인덱스의 값 변경
- .indexOf(value) : 값을 제공하면 해당 값의 가장 첫번째 인덱스를 반환
- .contains(value) : 해당값이 배열에 있는지 검색해서 true/false 반환
- .toArray() : 리스트 타입의 인스턴스를 일반 배열 타입으로 변환시킨다 . 자동으로 저장할 배열에 맞춰 타입이 형변환이 되고 새 배열의 길이 기준 또한 자동으로 맞춰진다.
- .clear() : 값 모두 비우기
- .size() : 요소개수 반환 (.length 랑 비슷)
리스트(List)
List
배열의 한계 때문에 만들어진 자료형
List는 메모리가 허용하는 한 계속해서 추가 할 수 있도록 만든 자료형이다.
List 는 interface 이다. 그렇기 때문에 List 만으로는 객체를 생성할 수 없다.
List 를 구현하는 하위 클래스타입으로 객체를 생성해야 한다
선언법
1. Set 인터페이스
순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않는다.
- HashSet : 가장빠른 임의 접근 속도순서를 예측할 수 없음
- TreeSet : 정렬방법을 지정할 수 있음
2. List 인터페이스
순서가 있는 데이터의 집합으로 데이터의 중복을 허용한다.
- LinkedList : 양방향 포인터 구조로 데이터의 삽입, 삭제가 빈번할 경우 데이터의 위치정보만 수정하면 되기에 유용스택, 큐, 양방향 큐 등을 만들기 위한 용도로 쓰임
- Vector : 과거에 대용량 처리를 위해 사용했으며, 내부에서 자동으로 동기화처리가 일어나 비교적 성능이 좋지 않고 무거워 잘 쓰이지 않음
- ArrayList : 단방향 포인터 구조로 각 데이터에 대한 인덱스를 가지고 있어 조회 기능에 성능이 뛰어남
3. Map 인터페이스
키(Key), 값(Value)의 쌍으로 이루어진 데이터으 집합으로,
순서는 유지되지 않으며 키(Key)의 중복을 허용하지 않으나 값(Value)의 중복은 허용한다.
- HashtableHashMap보다는 느리지만 동기화 지원null불가
- HashMap중복과 순서가 허용되지 않으며 null값이 올 수 있다.
- TreeMap정렬된 순서대로 키(Key)와 값(Value)을 저장하여 검색이 빠름
Set : 컬렉션 인터페이스. HashSet은 Set 인터페이스의 구현 클래스다.
Set 특징
- 중복 값을 허용하지 않는다.
- 저장 순서를 유지하지 않는다.
- 저장 순서가 없기 때문에 인덱스가 존재하지 않는다
데이터가 중복이 되면 안되는 경우에 Set 을 사용하면 자동으로 중복된 요소를 제거하기 때문에 사용한다.
Map :
리스트나 배열처럼 순차적으로 해다 요소 값을 구하지 않고 key를 통해 value 를 얻는다
Map 의 가장 큰 특징은 key 로 vaule를 얻어낸다는 점이다.
Map 특징
- 요소의 저장 순서를 유지하지 않는다
- Key : 중복 허용하지 않음
- value : 중복은 허용
HashMap
Map 인터페이스에서 구현한 클래스.
제네릭을 이용해서 객체 생성을 한다
HashMap 에서 사용하는 메서드
- .put(key,value) : Map 안의 요소들을 key , value 순으로 넣는다.
- .get(key) : key 값을 입력하면 value 값을 반환한다
- .containsKey() : Map 안에 해당 key 가 있는지 확인하여 true/false 를 반환한다.
- .remove(key) : key 값에 해당하는 아이템을 삭제한 후 그 value 값을 리턴한다.
- .size() : Map 의 개수를 리턴한다.
LinkedHashMap 과 TreeMap
HashMap 은 정렬이 따로 되어있진 않은데 TreeMap 은 입력된 Key의 sort(오름차순) 순으로 데이터가 출력된다.
LinkedHashMap 은 입력된 순서대로 데이터가 출력된다.
'언어 > Java' 카테고리의 다른 글
JAVA 예외처리 (0) | 2024.10.01 |
---|---|
24년 09월 23일 (0) | 2024.09.30 |
자바 Property란? (1) | 2024.09.30 |
Java 제네릭이란? (0) | 2024.09.30 |
접근한정자란? (0) | 2024.09.30 |