티스토리 뷰
자료구조란?
- 데이터를 추가, 삭제, 검색에 있어서 효율적으로 사용할 수 있도록 구조를 만들어서 저장해 둔 것
- 모든 자료구조 클래스에는 래퍼런스 타입의 데이터만 저장할 수 있다.
java.util 패키지에 속하는 JDK 라이브러리의 자료구조 클래스들
자료구조 | 클래스 이름 |
리스트 | ArrayList, LinkedList, Vector |
스택 | LinkedList, Stack |
큐 | LinkedList |
해쉬 테이블 | HashMap, Hashtable |
집합 | HashSet |
List
- 데이터를 일렬로 늘어놓은 자료구조
- 중복된 데이터를 저장하고 순서를 유지하는 선형 자료구조
선언
// ArrayList 선언
// 인덱스로 데이터 항목을 찾는 일이 많은 프로그램에서 유리함
ArrayList<String> list = new ArrayList<>();
// LinkedList 선언
// 데이터의 추가와 삭제가 빈번한 경우에 유리함
LinkedList<String> list = new LinkedList<>();
삽입
// 순서대로 데이터 추가
list.add("포도");
list.add("딸기");
list.add("복숭아");
// 특정 인덱스에 추가
list.add(2, "키위");
조회
// 인덱스에 해당하는 데이터를 조회
String str = list.get(2);
// 값에 해당하는 맨 앞 인덱스를 조회, 해당 값이 없으면 -1을 반환
int index = list.indexOf("사과");
// 값에 해당하는 맨 뒤 인덱스를 조회
int index = list.lastIndexOf("사과");
수정
// 인덱스 0 위치에 있는 데이터를 "오렌지"로 수정
list.set(0, "오렌지");
삭제
// 해당 인덱스의 데이터를 삭제하고, 뒤에 있던 데이터를 한 칸씩 앞으로 이동
list.remove(1);
Stack
- 가장 나중에 넣었던 데이터를 가장 먼저 꺼내는 입출력 방식(Last-In First-Out)
선언
Stack<Integer> stack = new Stack<>();
삽입
stack.push(1);
stack.push(2);
stack.push(3);
조회
// 데이터 수 조회
stack.size();
// 가장 마지막에 삽입한 데이터를 조회
stack.peek();
// 비어있는지 확인(비어 있으면 true)
stack.empty();
// 데이터가 존재 여부 확인
stack.contains(1);
삭제
// 가장 마지막 데이터 반환하고 제거
stack.pop();
// stack 전체 데이터 제거
stack.clear();
Queue
- 가장 처음 넣었던 데이터를 가장 먼저 꺼내는 입출력 방식(First-In First-Out)
선언
Queue<Integer> queue = new LinkedList<>();
삽입
// add() 또는 offer()로 데이터 삽입
queue.add(1);
queue.offer(2);
queue.offer(3);
조회
// 첫번째 값 조회
queue.peek();
삭제
// 첫번째 데이터 반환하고 제거
queue.poll();
// 첫번째 데이터 제거
queue.remove();
// 전체 데이터 제거
queue.clear();
Hash table
- key를 이용해서 value를 찾는 자료구조
- value는 중복될 수 있지만 key는 중복될 수 없다.
선언
HashMap<String, Integer> hashtable = new HashMap<>();
삽입
hashtable.put("해리", new Integer(95));
hashtable.put("헤르미온느", new Integer(100));
hashtable.put("론", new Integer(85));
hashtable.put("드레이코", new Integer(93));
hashtable.put("네빌", new Integer(70));
조회
hashtable.get("해리");
// entrySet
for(Map.Entry<String, Integer> entry : hashtable.entrySet()){
System.out.println(entry.getKey() + ", " + entry.getValue());
}
// keySet
for (String key : hashMap.keySet()) {
System.out.println(key + ", " + hashMap.get(key));
}
삭제
hashtable.remove("해리");
Set
- 똑같은 값을 중복해서 저장하지 않는 자료구조
- 저장 순서가 유지되지 않는다.
선언
HashSet<String> set = new HashSet<>();
삽입
set.add("자바");
set.add("카푸치노");
set.add("에스프레소");
조회
// 데이터 수 조회
set.size();
// 데이터 존재 여부 확인
set.contains("자바");
삭제
// 제거하려고 하는 데이터의 key로 데이터 제거
set.remove("자바");
// 전체 데이터 제거
set.clear();
참조
<뇌를 자극하는 Java 프로그래밍>, 한빛미디어
https://coding-factory.tistory.com/556
'Language > Java' 카테고리의 다른 글
Exception 클래스 (0) | 2022.10.18 |
---|---|
우아한테크캠프 Pro 5기 프리코스 - JUnit, AssertJ 학습하기 (2) | 2022.10.04 |
Overflow가 발생하면 어떻게 될까? (0) | 2022.04.27 |
JVM의 Garbage Collector (0) | 2021.04.09 |
Java Virtual Machine 구조 (0) | 2021.04.09 |
댓글