[Java] 컬렉션 자료구조
2025. 4. 30. 10:46ㆍJava
컬렉션 프레임워크


- 컬렉션 프레임워크 → Collection 인터페이스, Map 인터페이스
- List
- Set
HashSet: 동등 객체를 저장하지 않음, hashCode() 리턴 값이 같아도 동일한 객체로 판단해 저장하지 않음TreeSet: 이진 트리를 기반으로 한 Set 컬렉션
- Map :
- 키는 중복 저장할 수 없지만, 값은 중복 저장할 수 있음.
- 기존의 저장된 키와 동일된 키로 값을 저장하면 새로운 값으로 대치
HashMap: hashCode() 리턴 값이 같으면 동일 키로 보고 중복 저장을 허용하지 않음HashTable- 동기화된 메소드로 구성돼, 멀티 스레드가 동시에 Hashtable의 메소드들을 실행 불가.
- 멀티 스레드 환경에서도 안전하게 객체를 추가, 삭제할 수 있다.
- 자식 클래스로 키와 값을 String 타입으로 제한한 Properties가 있다.
TreeMap
Comparable과 Comparator
- TreeSet에 저장되는 객체와 TreeMap에 저장되는 키 객체를 정렬
- Comparable 인터페이스에서 정의된
compareTo()를 재정의해서 비교 결과를 정수 값으로 리턴
public class Person implements Comparable<Person> {
public String name;
public int age;
public Person(String name, int age) {
this.name = name;
this.age = age; }
@Override
public int compareTo(Person o) {
if(age < o.age) return -1;
else if(age == o.age) return 0;
else return 1; }
}
- 비교 기능이 없는 Comparable 비구현 객체를 저장하려면 비교자 Comparator를 제공
- 비교자는
compare()메소드를 재정의해서 비교 결과를 정수 값으로 리턴
LIFO, FIFO (Stack, Queue)
![]()
동기화된 컬렉션
- 동기화된 메소드로 구성된 Vector와 Hashtable은 멀티 스레드 환경에서 안전하게 요소를 처리
- Collections의
synchronizedXXX()메소드: 동기화된 메소드로 래핑List<T> list = Collections.synchronizedList(new ArrayList<T>());
수정할 수 없는 컬렉션
- 저장된 요소를 변경하고 싶지 않을 때 사용
// List 불변 컬렉션 생성
List<String> immutableList1 = List.of("A", "B", "C");
List<String> list = new ArrayList< >();
list.add("A");
list.add("B");
list.add("C");
// copyOf() 를 이용해 기존 컬렉션을 복사
List<String> immutableList2 = List.copyOf(list);
참고자료
'Java' 카테고리의 다른 글
| [Java] 람다식 (1) | 2025.05.07 |
|---|---|
| [Java] Multi Thread (1) | 2025.04.29 |
| [Java] 제네릭 (0) | 2025.04.29 |
| [Java] 인터페이스 (1) | 2025.04.21 |
| [Java] 상속 (1) | 2025.04.17 |