-
[JAVA] Collection 자료구조 정리프로그래밍 공부/JAVA 2021. 3. 4. 23:02
[출처] https://static.javatpoint.com/images/java-collection-hierarchy.png List
: 배열과 비슷한 자료형, 원소의 개수가 가변적일 때 사용한다.
- add(val): 배열에 끝에 val 삽입
- add(idx, val): idx 위치에 val 삽입
- set(idx, val): idx 위치의 원소를 val 값으로 변경
- get(idx): idx에 해당하는 값을 반환
- size(): 리스트의 개수 반환
- contains(val): 리스트에 val이 있다면 true 반환
- remove(val): val 삭제 후 삭제 결과 반환(true/false)
- remove(idx): idx위치 값 삭제 후삭제된 항목 반환
- clear(): 리스트의 모든 값 삭제
ArrayList
: List 인터페이스를 구현한 클래스
LinkedList
: 원소들을 인덱스로 관리하는 arraylist와 달리 링크를 이용하여 원소들을 관리한다.
원소를 삽입, 삭제하는 연산이 많이 발생할 때 성능이 좋다.
Vector
: arraylist와 달리 동기화된 메서드로 구성되어 있어 멀티 스레드 환경에서 안전하게 사용 가능하다.
Queue
: FIFO를 구현한 자료형, LinkedList 클래스를 이용하여 선언한다.
Queue<Integer> queue = new LinkedList<Integer>();
- add(val): val 값 삽입, 저장공간 부족하면 오류 발생 (IllegalStateException)
- offer(val): val 값 삽입, 삽입 결과 반환(true/false)
- element(): 삭제 없이 요소 반환, 큐가 비어 있으면 오류 발생
- peek(): 삭제 없이 요소 반환, 큐가 비어 있으면 null 반환
- remove(): 큐에서 요소를 삭제하고 요소 반환, 큐가 비어 있으면 오류 발생
- poll(): 큐에서 요소를 삭제하고 요소 반환.
PriorityQueue
: 우선순위가 높은 요소부터 반환,우선순위는 숫자가 작을수록 높다.
숫자가 아닌 다른 객체라면 객체 비교 방법을 제공해야 한다.
// 값이 큰 순서대로 PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder()); // 객체가 클래스인 경우, 클래스 선언 public class Student implements Comparable<Student>{ int num; String name; @Override public int compareTo(Student o){ return this.num-o.num; // num 값이 작을 수록 우선순위가 큼 } }
Deque
: 큐의 양쪽으로 삽입과 삭제 연산을 수행한다. arrayList를 이용하여 선언한다.
Deque<Integer> queue = new LinkedList<Integer>();
- 큐 메서드의 뒤에 First 또는 Last를 붙여 사용한다.
Set
: 요소의 저장 순서를 유지하지 않고, 중복 저장을 허용하지 않는 인터페이스
- add(val): 값 추가
- size(): set의 개수 반환
- contains(val): set에 val이 있다면 true 반환
- remove(val): val 삭제 후 삭제 결과 반환(true/false)
- clear(): 리스트의 모든 값 삭제
HashSet
: 요소를 hash table에 저장. set을 구현한 클래스 중 가장 성능이 좋다
TreeSet
: 요소의 값에 따라 정렬되어 저장된다.
LinkedHashSet
: 연결된 목록 타입으로 구현된 hash table에 저장되어 저장된 순서에 따라 값이 정렬됨
Stack
: LIFO를 구현한 자료형 클래스
- push(val): val 값 삽입
- peek(): 삭제 없이 요소 반환
- pop(): 요소 반환 후 요소 삭제
- empty(): 비어있는지 판별
- search(val): val 값 스택에 존재하는지 확인
'프로그래밍 공부 > JAVA' 카테고리의 다른 글
JAVA 특징 정리 (0) 2021.07.06 [JAVA] I/O BufferedReader와 StringBuilder (0) 2021.03.24 [JAVA] 정렬(Sorting) (0) 2021.03.08 [JAVA] 형변환 (0) 2021.03.06