JAVA - Array, ArrayList, HashSet, HashMap

리진아·2025년 5월 30일

백준 문제를 풀면서 자바에 대한 지식을 익히도록 노력하는 중이다.

Array, ArrayList와 hashSet, hashMap에 대한 내용을 알아보자.




🩵Array(배열)


1. 고정된 크기

크기가 선언 시에 고정이 되어있음.
선언 이후 변경 불가


2. 선언

      
      	int[] arr1 = new int[5];            // 기본값 0
      	String[] arr2 = new String[3];      // 기본값 null
      	double[] arr3 = new double[4];      // 기본값 0.0
      

3. 인덱스로 접근 -> 빠른 속도

순서가 정해져 있듯이 arr[3] 으로 접근함.


4. 길이

arr.length


5. 접근

    
    arr[0] = 10; //삽입
    System.out.println(arr[0]); //출력
	
    //삭제 -> 값을 당겨야 함
	int[] arr = {10, 20, 30, 40, 50}; //초기화
	int index = 2; //2번(30) 값 지우고 싶음

    for (int i = index; i < arr.length - 1; i++) {
        arr[i] = arr[i + 1]; // 한 칸씩 당김
    }
	
    arr[arr.length - 1] = 0; //마지막 남는 자리는 0으로 설정



🤍ArrayList


1. 크기가 동적으로 변함 -> 가변 크기의 배열


2. 선언

import java.util.ArrayList; //java.util 패키지에 있음

ArrayList<Integer> list = new ArrayList<>();
ArrayList<String> list = new ArrayList<>(); 

List<String> list = new ArrayList<>(); //또는 이렇게 선언도 가능


3. 접근

메서드로 조작 -> add(), get(), remove(), size() 등등

list.add("apple");
list.add(1, "grape");

System.out.println(list.get(1)); // "grape"

list.remove(1); // grape 삭제

System.out.println(list.size()); // 1

list.set(0, "kiwi"); // apple -> kiwi

System.out.println(list.contains("kiwi"));   // 존재하는 지 유무 true

list.clear(); // 모든 값 삭제 

4. 특징

인덱스에 접근해서 사용하고
순서를 유지함




🩷HashSet


1. 순서가 없음

-> 중복을 허용하지 않음


2. 선언

HashSet<Integer> arr = new HashSet<>();
HashSet<String> arr = new HashSet<>();

3. 메서드

add(), contains(), remove(), size()


4. 접근

arr.add("apple"); //추가
arr.add("banana");
arr.add("apple"); // 중복은 무시됨

System.out.println(arr);  //apple과 banana 출력인데 순서는 X

System.out.println(arr.contains("banana")); // 존재유무 true

arr.remove("banana"); //제거

System.out.println(arr.size());  //크기 (현재는 1)

arr.clear(); //전체 삭제

5. 특징

해시 기반 구조
검색 속도 빠름




🩶HashMap

1. Key-Value 쌍으로 데이터를 저장하는 자료구조

Key는 중복 불가
Value는 중복 가능

2. 선언

import java.util.HashMap;

HashMap<String, Integer> arr = new HashMap<>();

3. 메서드

put(key, value), get(key), containsKey(key), containsValue(value), remove(key)

4. 접근

arr.put("apple", "3");
arr.put("banana", "5");
arr.put("apple", "10"); //apple이라는 키가 같기 때문에 value는 10으로 갱신됨

System.out.println(arr); //{apple=10, banana=5}

System.out.println(arr.get("apple"));  // 10

System.out.println(arr.containsKey("banana")); // 키 존재 여부 : true

System.out.println(arr.containsValue(100));  // Value 존재 여부 : false

arr.remove("banana"); //키에 따른 정보 제거

System.out.println(arr.size()); //1

arr.clear(); //전체 삭제

5. 특징

내부적으로 배열 + 연결리스트/트리를 사용
인덱스가 아닌 Key값으로 접근

profile
이것저것 개발 블로그

0개의 댓글