: key와 value 입력. 키의 중복을 배제함. 이때 hash는 키를 이용해서 값을 찾기 때문에 검색 알고리즘에 매우 효율적.
HashMap<Integer,String> map = new HashMap<>();//new에서 타입 파라미터 생략가능
map.put(1,"사과"); //값 추가
map.remove(1); //key값 1 제거
map.get(1); //key값 1의 value얻기 : 사과
// 특정 key값 존재여부 체크 (containsKey())
map.containsKey(1)); // true
//전체 출력
Iterator<Integer> keys = map.keySet().iterator();
while(keys.hasNext()){
int key = keys.next();
System.out.println("[Key]:" + key + " [Value]:" + map.get(key));
}
//getOrDefault()
//찾는 키가 존재한다면 찾는 키의 값을 반환하고 없다면 기본 값을 반환하는 메서드
String [] abc = { "A", "B", "C" ,"C"};
HashMap<String, Integer> hm = new HashMap<>();
for(String key : abc) {
hm.put(key, hm.getOrDefault(key, 0) + 1);
}
System.out.println("출력 결과 : " + hm);
// 출력 결과 : {A=1, B=1, C=2}
: value를 자바에서 자동으로 임의 지정하며 key에 중복을 배제하고 값을 넣음.
HashSet<Integer> set = new HashSet<Integer>();
//메서드 hashmap과 동일
set.add(1);
: 사용자가 정의한 <제너릭>객체에 맞는 값을 넣어 저장하고 중복 삽입이 가능
단, 수정 변경시 배열을 새로 생성해서 배열채로 집어넣기에 수정이 상대적으로 느림. 또한 키로 값을 찾을 수 없기에 검색 알고리즘에 매우 느린 속도
List<String> listA = new ArrayList<String>();
listA.add("김삿갓");
listA.get(0);
//Iterator 통한 전체 조회
Iterator<String> iterator = listA.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
}
import java.util.Stack; //import
Stack<Integer> stack = new Stack<>(); //int형 스택 선언
stack.push(1); // stack에 값 1 추가
stack.peek(); // stack의 가장 상단의 값 출력
stack.pop(); // stack에 값 제거
stack.clear(); // stack의 전체 값 제거 (초기화)
stack.empty(); // stack이 비어있는제 check (비어있다면 true)
stack.contains(1) // stack에 1이 있는지 check (있다면 true)
import java.util.LinkedList; //import
import java.util.Queue; //import
Queue<Integer> queue = new LinkedList<>(); //int형 queue 선언, linkedlist 이용
queue.add(2); // queue에 값 2 추가
queue.offer(3); // queue에 값 3 추가
queue.poll(); // queue에 첫번째 값을 반환하고 제거 비어있다면 null
queue.remove(); // queue에 첫번째 값 제거
queue.clear(); // queue 초기화