JAVA/JAVA 기초 문법

[java] 배열 ArrayList, hashMap 설명

코끼리똥11 2024. 6. 4. 11:49

ArrayList

ArrayList는 자바에서 제공하는 동적 배열(Dynamic Array) 클래스입니다. 이 클래스는 배열처럼 연속된 메모리 공간에 요소를 저장하며, 필요에 따라 크기를 동적으로 조절할 수 있습니다. ArrayListjava.util 패키지에 포함되어 있습니다.

주요 특징

  1. 동적 크기 조절: 요소를 추가하거나 제거할 때 자동으로 크기를 조절합니다.
  2. 인덱스 기반 접근: 배열처럼 인덱스를 사용하여 요소에 빠르게 접근할 수 있습니다.
  3. 배열과 유사한 동작: 내부적으로 배열을 사용하여 요소를 저장하며, 요소를 순서대로 저장합니다.
  4. 제네릭 지원: 제네릭을 사용하여 다양한 데이터 타입의 요소를 저장할 수 있습니다.
  5. 성능: 요소의 추가나 삭제가 배열의 크기를 조절하므로, 중간 삽입/삭제는 비효율적일 수 있습니다.

주요 메서드

  • add(E e): 리스트의 끝에 요소를 추가합니다.
  • add(int index, E element): 지정된 인덱스에 요소를 삽입합니다.
  • get(int index): 지정된 인덱스의 요소를 반환합니다.
  • remove(int index): 지정된 인덱스의 요소를 제거합니다.
  • size(): 리스트의 요소 개수를 반환합니다.
  • isEmpty(): 리스트가 비어 있는지 확인합니다.
  • clear(): 리스트의 모든 요소를 제거합니다.
  • contains(Object o): 리스트에 특정 요소가 포함되어 있는지 확인합니다.
import java.util.ArrayList;

public class ArrayListExample {
    public static void main(String[] args) {
        // ArrayList 생성
        ArrayList<String> list = new ArrayList<>();

        // 요소 추가
        list.add("Apple");
        list.add("Banana");
        list.add("Cherry");

        // 특정 위치에 요소 추가
        list.add(1, "Blueberry");

        // 요소 출력
        System.out.println("List: " + list);

        // 요소 접근
        System.out.println("Element at index 2: " + list.get(2));

        // 요소 제거
        list.remove(3);

        // 리스트 크기
        System.out.println("Size: " + list.size());

        // 리스트가 비어있는지 확인
        System.out.println("Is list empty? " + list.isEmpty());

        // 리스트 초기화
        list.clear();
        System.out.println("Cleared list: " + list);
    }
}



// 출력결과 
List: [Apple, Blueberry, Banana, Cherry]
Element at index 2: Banana
Size: 3
Is list empty? false
Cleared list: []

 

 

hashMap

HashMap은 자바에서 제공하는 해시 테이블을 기반으로 한 맵(Map) 인터페이스의 구현체 중 하나입니다. 해시맵은 키-값(key-value) 쌍을 저장하며, 키는 중복될 수 없고, 각 키는 하나의 값과 연관됩니다. 해시맵은 내부적으로 해시 함수를 사용하여 키를 해시값으로 변환하고, 이 해시값을 사용하여 데이터를 저장하고 검색합니다.

주요 특징

  1. 고속 검색 및 삽입: 해시맵은 해시 함수를 사용하여 데이터를 저장하고 검색하기 때문에 매우 빠른 검색 및 삽입 성능을 제공합니다.
  2. 중복된 키 허용 안 함: 각 키는 유일해야 하며, 중복된 키를 허용하지 않습니다.
  3. Null 키와 Null 값 허용: 해시맵은 하나의 null 키를 허용하며, 여러 개의 null 값을 저장할 수 있습니다.
  4. 순서 보장 안 함: 해시맵은 순서를 보장하지 않습니다. 즉, 키-값 쌍의 순서는 항상 일정하지 않습니다.

주요 메서드

  • put(K key, V value): 지정된 키와 값으로 맵에 새로운 항목을 추가합니다.
  • get(Object key): 지정된 키에 해당하는 값이 있는 경우 해당 값을 반환합니다.
  • containsKey(Object key): 맵에 지정된 키가 있는지 확인합니다.
  • containsValue(Object value): 맵에 지정된 값이 있는지 확인합니다.
  • remove(Object key): 맵에서 지정된 키와 연관된 값을 제거합니다.
  • keySet(): 맵의 모든 키를 Set으로 반환합니다.
  • values(): 맵의 모든 값을 Collection으로 반환합니다.
  • entrySet(): 맵의 모든 키-값 쌍을 Set으로 반환합니다.
import java.util.HashMap;

public class HashMapExample {
    public static void main(String[] args) {
        // HashMap 생성
        HashMap<String, Integer> scores = new HashMap<>();

        // 값 추가
        scores.put("Alice", 95);
        scores.put("Bob", 85);
        scores.put("Charlie", 90);

        // 값 검색
        int aliceScore = scores.get("Alice");
        System.out.println("Alice's score: " + aliceScore);

        // 값 변경
        scores.put("Bob", 88);
        int bobScore = scores.get("Bob");
        System.out.println("Bob's updated score: " + bobScore);

        // 값 제거
        scores.remove("Charlie");

        // 모든 키-값 쌍 출력
        for (String name : scores.keySet()) {
            int score = scores.get(name);
            System.out.println(name + "'s score: " + score);
        }
    }
}


// 출력값
Alice's score: 95
Bob's updated score: 88
Alice's score: 95
Bob's score: 88