개발자 키우기
JAVA - Collection 본문
자바에서 Collection은 다수의 요소를 저장하고 관리하는 자료 구조를 의미한다.
Collection 프레임워크는 다양한 종류의 컬렉션 클래스와 인터페이스를 제공하며
제네릭을 사용하여 타입 안정성을 제공한다.
List 인터페이스
ArrayList
데이터 요소를 배열 형태로 저장.
객체를 생성하면서 일정량의 저장공간을 확보하고 초기 설정한 저장공간이 부족할 때 다시 일정량의 공간을 추가 확보.
Vector
ArrayList와 유사하며 멀티쓰레드에 안전함. ( Tread safe )
LinkedList
각 노드는 데이터 요소와 다음 노드를 가르키는 주소로 이루어져 있다.
삭제, 삽입이 많다면 ArrayList 보다 성능이 뛰어나다.
하지만 검색이 ArrayList 보다 느리고 메모리 사용량이 더 크다.
Stack
데이터 요소를 일렬로 저장하며, 가장 최근에 추가한 데이터가 가장 먼저 제거된다. ( LIFO )
Queue 인터페이스
가장 먼저 추가된 데이터가 가장 먼저 제거되는 방식 ( FIFO )
Deque 인터페이스
큐와 스택 두가지 연산을 모두 지원하는 방식으로 데이터를 양 끝에서 추가하거나 제거할 수 있다.
Set 인터페이스
중복된 요소를 허용하지 않으며, 순서를 보장하지 않으며 검색이 빠르다.
Set에 객체를 저장할때 중복을 제거하기 위해서 hashCode()와 equals()을 overrid 해서 재정의를 해야 한다.
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Person person = (Person) obj;
return age == person.age && Objects.equals(name, person.name);
}
}
Map 인터페이스
키와 값으로 이루어져 있으며 키는 중복이 허용되지 않지만 값을 중복이 허용 가능하다
같은 키를 넣으면 값은 덮어씌우기가 된다.
HashMap
Map의 대표 컬렉션으로 Map의 구현체인 클래스다.
객체를 저장할 때 중복을 제거하기 위해서 hashCode()와 equals()을 overrid 해서 재정의를 해야 한다.
HashTable
HashMap과 유사하며 멀티스레드에 안전함 ( Tread safe )
Properties
HashTable의 하위 클로스로 키와 값이 String 타입만 가능하다.
또한 저장 시 유니코드로 변환되어 저장이 된다.
Iterator 인터페이스
Collection 인터페이스로부터 얻을 수 있는 데이터 요소들을 순회하여 처리하기 위한 인터페이스다.
Iterable은 Collection의 부모이고 iterator 추상 메서드를 가지고 있다.
따라서 Collection은 모두 iterator 메소드를 사용할 수 있다.
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
}
'Back-end > JAVA' 카테고리의 다른 글
JAVA - Stream (1) | 2023.10.15 |
---|---|
JAVA - 메서드 참조, 생성자 참조 (0) | 2023.10.15 |
JAVA - Functional Interface (1) | 2023.10.15 |
JAVA - Lambda (0) | 2023.10.15 |
JAVA - Generic (1) | 2023.10.15 |