[Java] 자료구조 사용법 정리

개발자·2021년 12월 6일
0

Java

목록 보기
4/8
post-thumbnail

Stack

Stack<Integer> s = new Stack<>(); // 선언

s.push(1); // 값 추가
s.pop(); // 값 제거
s.clear(); // 초기화(모든 값 제거)
s.peek(); // top 값 출력
s.size(); // 스택 크기 출력
s.empty(); // 스택이 비어있으면 true
s.contains(1); // 스택에 값이 포함되어 있으면 true

Queue

Queue<Integer> q = new LinkedList<>(); // 선언

// 값 추가
q.add(1);
q.offer(2);

q.poll(); // top 값 출력 후 제거
q.remove(); // top 값 제거
q.clear(); // 큐 초기화
q.peek(); // top 값 출력
q.size(); // 큐 크기 출력
q.isEmpty() // 큐가 비어있으면 true
q.contains("str") // 큐에 포함되어 있으면 true

Priority Queue

// 선언
PriorityQueue<Integer> pq = new PriorityQueue<>(); // 오름차순
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(Collections.reverseOrder()); // 내림차순

// 값 추가
pq.add(1);
pq.offer(2);

pq.poll(); // top 값 출력 후 제거
pq.remove(); // top 값 제거
pq.clear(); // 우선순위큐 초기화
pq.peek(); // top 값 출력
pq.isEmpty() // 우선순위큐가 비어있으면 true

Deque

Deque<Integer> dq=new LinkedList<>(); // 선언

// 덱의 앞쪽에 값 추가
dq.addFirst(1);
dq.offerFirst(1);

// 덱의 뒷쪽에 값 추가
dq.add(1);
dq.offer(1);
dq.addLast(1);
dq.offerLast(1);

// 덱 앞쪽 값 제거, 리턴
dq.removeFirst(); // 비어있으면 예외
dq.remove(); // removeFirst와 동일
dq.pollFirst(); // 비어있으면 null 리턴
dq.poll(); // pollFirst와 동일

// 덱 뒷쪽 값 제거, 리턴
dq.removeLast(); // 비어있으면 예외
dq.pollLast(); // 비어있으면 null 리턴

// 덱 앞쪽 값 제거X, 리턴
dq.getFirst(); // 비어있으면 예외
dq.peekFirst(); // 비어있으면 null 리턴
dq.peek(); // peekFirst와 동일

// 덱 뒷쪽 값 제거X, 리턴
dq.getLast(); // 비어있으면 예외
dq.peekLast(); // 비어있으면 null 리턴

dq.contain(Object o); // Object와 동일한 값 포함되어 있는지 확인
removeFirstOccurrence(Object o); // 덱의 앞부터 확인해 동일한 첫 값 삭제
removeLastOccurrence(Object o); // 덱의 뒤부터 확인해 동일한 첫 값 삭제

dq.size(); // 덱 크기 출력

HashMap

HashMap<String,Integer> map = new HashMap<>(); // 선언
HashMap<String,Integer> map2 = new HashMap<>(map); // map 복사
HashMap<String,Integer> map3 = new HashMap<>(10); // 크기 지정

// 값 추가
map.put("Java", 1);
map.put("C++", 2);

map.remove("Java"); // Key(Java)에 해당하는 값 제거
map.clear(); // HashMap의 모든 값 제거

map.replace("Java", 10); // Key에 해당하는 Value 변경
map.isEmpty(); // HashMap이 비어있다면 true

map.get("Java"); // Key(Java)에 해당하는 Value(1) 리턴
map.containsKey("Java"); // Key값에 포함되면 true
map.containsValue(1); // Value에 포함되면 true
map.keySet(); // Key값들 리턴[Java, C++]
map.values(); // Value들 리턴[1, 2]
map.getOrDefault("key", defaultValue); // "key"에 해당하는 값이 없으면 defaultValue 반환

ArrayList

ArrayList<String> list = new ArrayList<>(); // 선언
ArrayList<String> list = new ArrayList<>(10); // 크기 지정 가능 

list.add("a"); // 값 추가
list.add(null); // null도 추가 가능
list.add(0, "b"); // 0번째 index에 5 추가
list.addAll(list2); // list 전체 복사

list.remove(0); // 해당 index의 값 제거
list.clear(); // ArrayList 값 모두 제거
list.size(); // ArrayList 크기 리턴

list.get(0); // 0번째 index 값 리턴
list.contains("a"); // ArrayList에 해당 값이 존재하면 true
list.indexOf("a"); // ArrayList에 해당 값이 존재하면 index, 없으면 -1 리턴

LinkedList

LinkedList<Integer> list = new LinkedList<>(); // 선언
// LinkedList는 초기 크기 지정 불가능

list.addFirst(1); // 가장 앞에 값 추가
list.addLast(2); // 가장 뒤에 값 추가
list.add(3); // 값 추가
list.add(1, 10); // 1번 index에 값 추가

list.removeFirst(); // 가장 앞의 값 제거
list.removeLast(); // 가장 뒤의 값 제거
list.remove(1); // index 1에 해당하는 값 제거
list.remove(); // 생략시 0번 index 값 제거
list.clear(); // 모든 값 제거

list.size(); // LinkedList 크기 리턴
list.get(0); // 0번째 index 값 리턴
list.contains("a"); // LinkedList 해당 값이 존재하면 true
list.indexOf("a"); // LinkedList 해당 값이 존재하면 index, 없으면 -1 리턴
profile
log.info("공부 기록 블로9")

0개의 댓글