[코테]JAVA 자주쓰이는 자료구조

수경·2023년 4월 23일
0

hashmap

: 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} 

hashset

: value를 자바에서 자동으로 임의 지정하며 key에 중복을 배제하고 값을 넣음.

HashSet<Integer> set = new HashSet<Integer>();	
		//메서드 hashmap과 동일
		set.add(1);

arraylist

: 사용자가 정의한 <제너릭>객체에 맞는 값을 넣어 저장하고 중복 삽입이 가능
단, 수정 변경시 배열을 새로 생성해서 배열채로 집어넣기에 수정이 상대적으로 느림. 또한 키로 값을 찾을 수 없기에 검색 알고리즘에 매우 느린 속도

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);
  } 

stack

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)

queue

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 초기화
profile
웹백엔드개발자를 꿈꾸는

0개의 댓글