Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- Dependency Injection
- Spring
- 일급 객체
- java
- OAuth 2.0
- synchronized
- factory
- middleware
- nestjs
- Google OAuth
- lombok
- Volatile
- spring security
- builder
- 일급 컬렉션
Archives
- Today
- Total
HJW's IT Blog
[JAVA] Collections Framework (Linked List, Stack, Queue, Set) 본문
Linked List
Linked List 특징
- 이중 연결 리스트로, 각 요소는 이전 및 다음 요소에 대한 참조 를 가진다
- 삽입 및 삭제 작업이 효율적이다
- 요소들이 삽입된 순서대로 유지된다
- 임의 접근 속도가 느리다 → 특정 인덱스 접근 시간 O(n)
- Queue 와 Deque를 지원
메서드
LinkedList<Integer> list = new LinkedList<>();
list.add(1); // 리스트 끝에 추가
list.add(index, 1); // index 위치에 삽입
list.addFirst(1) // 리스트의 첫번째에 삽입
list.remove(); // 첫 요소 삭제
list.remove(index); // index 위치 요소 제거
list.removeLast()' // 마지막 요소 삭제
list.get(index); // 특정 인덱스의 요소 반환
list.getFirst();
list.getLast();
list.poll(); //첫 요소 제거 및 반환
list.peek(); // 첫 요소 제거없이 반환
Stack
Stack 특징
- LIFO(Last In First Out) 의 구조로, 마지막에 들어간 요소가 가장 먼저 나온다
- Vector 를 상속받은 클래스이기 때문에, vector 메서드 사용이 가능하다
- 입출력이 한쪽에서만 이루어 진다.
메서드
Stack<Integer> s = new Stack<>();
s.push(10);
s.pop();
s.peek(); // 제거 없이 맨위 반환
s.isEmpty(); // 비어있는지 확인
s.search(value); // 스택에서 특정 객체를 찾아 위치를 반환
Queue
Queue 특징
- FIFO 구조
- 삽입연산, 삭제 연산
- PriorityQueue, ArrayDeque 등 여러 구현체가 존재한다
메서드
Queue<String> queue = new LinkedList<>();
queue.add();
queue.remove();
Set
특징
- 순서가 없는 자료구조
- 중복 값을 허용하지 않는다
- Collection interface 를 상속받기에, collection 메소드 사용 가능
- HashSet, LinkedHashSet, TreeSet 이 있다
HashSet
- 순서를 보장하지 않으며 null 값을 허용한다
- 빠른 검색과 삽입
- 중복 방지가 목적일 때 효과적이다
Set<String> s = new HashSet<>();
LinkedHashSet
- 요소들이 추가된 순서를 유지한다
- 중복 방지 + 삽입 순서가 중요할 때 사용
Set<String> s = new LinkedHashSet<>();
TreeSet
- 요소들이 오름차순 으로 정렬된다
- 중복 방지 + 정렬된 요소가 필요할 때 사용
Set<String> s = new TreeSet<>();
Methods
Set<String> set = new HashSet<>();
set.add(value);
List<String> list = Arrays.asList("apple", "banana", "apple");
set.addAll(list); // 중복된 요소는 추가되지 않음
set.clear(); // 모든 요소 제거
set.contains("apple") // 요소가 포함되어 잇는지
set.containsAll(list) // 모든 요소가 포함되어 있는지
set.isEmpty() // 비어있는지 확인
Iterator<String> it = set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
set.remove("apple"); // 요소 제거
set.retainAll(list) // list 에 포함된 요소외에 모두 제거
set.size() // 크기 반환
'JAVA' 카테고리의 다른 글
Spring 없이 의존성 관리와 팩토리 패턴 구현하기 (0) | 2025.01.24 |
---|---|
JVM 은 어떻게 동작하는가 (1) | 2025.01.24 |
JAVA Volatile 키워드와 멀티쓰레드 (0) | 2025.01.13 |
[JAVA] Collections Framework 1 (Generic, ArrayList) (1) | 2024.10.13 |
[JAVA] 객체와 클래스 (1) | 2024.10.13 |