FILO (first in last out)의 자료구조를 가지고 있다.
push(넣기), peek(조회), pop(꺼내기)
데이터들을 나열하고 싶거나 데이터의 중복 처리를 막고 싶을때 사용한다.
선언: Stack intStack 형태로 선언
생성: new Stack(); 형태로 생성
추가: intStack.push({추가할 값}) 형태로 추가
조회: intStack.peek() 형태로 맨 위 값을 조회 (맨 위임!)
꺼내기: intStack.pop() 맨위의 값을 꺼낸다. (꺼내고 나면 삭제 됨)
출력값
1
15
10
while 문을 풀어서 생각하면 not(intStack의 값이 비어있다면) intStack의 값을 pop하라는 뜻이다.
여기서 !(not)을 주었기 때문에 해당 코드가 실행이 가능하다. !가 없다면, intStack의 값은 10, 15, 1의 값들이 들어있기 때문에 while문이 false가 되므로 실행이 되지 않기 때문이다.
출력값
1
3
FIFO 의 자료구조
기능 add() , 조회 peek() , 꺼내기 poll() 기능만 존재
Linkedlist를 사용하여 Queue를 생성해서 받을 수 있다.
Queue는 생성자가 없는 인터페이스이다
선언: Queue intQueue 형태로 선언
생성: new LinkedList<Integer<(); 형태로 생성
추가: intQueue.add({추가할 값}) 형태로 값을 맨위에 추가
조회: intQueue.peek() 형태로 맨 아래값을 조회
꺼내기: intQueue.poll() 형태로 맨 아래값을 꺼냄(꺼내고 나면 삭제됨)
출력값
1
5
9
출력값
1
순서가 보장되지 않고 중복을 허용하지 않도록 유지가 가능한 자료구조
Set은 그냥 사용도 가능하지만, HashSet, TreeSet 등으로 응용하여 같이 사용도 가능하다.
생성자가 없는 껍데기로 바로 생성이 불가능하다!
출력값
1
5
9
12
변수 intSet 안에 1, 12가 중복이 되었으므로 각각 제외된 4번에 해당되는 값들만 출력되었다. (집합의 개념)
출력값
1
5
9
12
false
true
true
해당 매서드는 intSet 변수에 2 와 5를 각각 포함하고 있는지를 물어보는 코드이고 True 또는 False의 값을 반환해준다.
key - value 페어가 굉장히 중요하다.
key라는 값으로 unique하게 보장이 되어야 함
Map 또한 HashMap, TreeMap으로 응용이 가능
선언: Map(String, Integer> intMap 형태로 key 타입과 Value타입을 지정해서 선언
생성: new HashMap<>(); 형태로 생성
추가: intMap.put({추가할 key값},{추가할 Value값}) 형태로 Key값에 Value값을 추가한다.
조회: intMap.get({조회할 Key값})형태로 Key에 있는 Value값을 조회한다.
전체key조회: intMap.keySet() 형태로 전체 key 값들을 조회
전체value조회: intMap.values() 형태로 value값들을 조회
삭제: intMap.remove({삭제할 Key값}) 형태로 key에 있는 value값을 삭제
출력값
이
일
삼
향상된 for문으로 key값을 전체 출력했으나, "삼" 의 경우 총 3개로 중복되어있기에 1개만 출력되어 총 3개가 나온다. (Key값은 항상 unique하여야 함!)
이때 일 → 이 → 삼 순으로 나온 것은 map은 순서가 없는 key-value 쌍으로 이뤄진 데이터의 집합체기 때문에 이 → 일 → 삼 순으로 출력되었다.
출력값
12
11
15
value는 위에 Map에서 String이 아닌 Integer이므로 for 문에서 Integer로 바꿔야 한다.
출력을 했을 때 12, 11 ,15가 나왔는데, key값 삼에 대한 값이 처음에 13이 나왔지만 동일 key값 삼의 14에 의해 14로 덮어지고 마찬가지로 key값 삼의 15에 의해 덮어진 최종 15값이 출력된다.
출력값
15
key 값"삼"의 value 값 13이 중복되어 14로 덮어지고 다시 15로 덮어져서 최종 15가 출력된다.