[JAVA] JAVA 기초 | 배열, 리스트(ArrayList<>) , 맵(Map<>), 제네릭

2025. 8. 4. 17:35·✏️공부/💡JAVA
728x90
반응형
더보기

노션 에서 작성하였으므로 더 보기 편하실 수 있습니다.

https://www.notion.so/JAVA-Day-3-24574fb5c2e880db9038eb36a283b09a?source=copy_link

 

[Day] 08.04
[Chapter] ~ 38강



 

⚙️ 기본형 변수타입에 대응되는 래퍼타입(Wrapper Class)

✚ 래퍼 타입이란?
- 기본 자료형은 값 자체를 저장하는 반면, 래퍼 타입은 해당 값과 관련된 메서드를 포함하는 객체 형태로 제공
- 프로그래밍 언어에서 기본 자료형(primitive type)을 객체 형태로 다루기 위해 사용되는 클래스
    ex) int형을 객체로 다루기 위해 Integer 클래스 사용

 

기본형 래퍼 타입
boolean Boolean
char Character
byte Byte
short Short
int Integer
long Long
float Float
double Double

➡️ 래퍼 타입은 제네릭에서 많이 사용됨

제네릭 ( 꺽쇠 <>)

클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법

 

 

⚙️ 배열

동일한 데이터 타입의 요소들이 메모리에 연속적으로 저장되는 자료구조

WiseSaying[] wiseSayings = new WiseSaying[100];

 


장점

  • 구현이 쉬움
  • 검색 성능 좋음 ➡️ index 활용
  • 참조 위한 추가적 메모리 할당 필요 ❌ 

단점

  • 삽입 / 삭제 비효율적 ➡️ 삽입 / 삭제 시 모든 요소를 이동시켜야 함 ➡️ 즉, 크기가 클수록 성능 떨어짐
  • 크기 불변 ➡️ 너무 크면 메모리 낭비 / 너무 작으면 그 이상의 저장 못함
  • 메모리 재사용 불가
  • 제네릭 불가

 

 

⚙️ ArrayList<>

자바에서 제공하는 가변 크기 배열(동적 배열) 즉, 배열의 단점 보완

import java.util.ArrayList;

		List<Integer> al = new ArrayList<>();
        al.add(10); // 0
        al.add(20); // 1
        al.add(30); // 2
        System.out.println(al.get(0) + al.get(1) + al.get(2));
        System.out.println(al.size()); // 길이 : 3
        al.add(40); // 3
        System.out.println(al.size()); // 길이 : 4

 


장점

  • 크기 가변 ➡️ 필요 시 자동으로 늘어남
  • 삽입 / 삭제 간단 ➡️ add(), remove()
  • 자동으로 내부 배열을 재배열 ⭕️
  • 제네릭 가능 ex) ArrayList<Integer>
  • 메서드 API 풍부 ➡️ contains, indexOf 

단점

  • 중간 삽입 / 삭제 느림
  • 기본 자료형 사용 불편 ➡️ int, char 타입 사용 ❌ ➡️ Integer, Character로 래핑 ⭕️
    📍 즉, 리스트 제네릭에는 참조타입만 ⭕️ 



⚙️ Map<>

프로그래밍에서 키(Key)와 값(Value)을 연결하여 데이터를 저장하는 자료구조

import java.util.Map;
import java.util.HashMap;

				System.out.println("== 맵 ==");
        // 데이터를 넣은 순서를 기억하고 싶다면 LinkedHashMap을 사용하면 된다.
        Map<String, Integer> agesMap = new HashMap<>();
        // 맵은 데이터 넣을 때 불편하다.
        agesMap.put("철수", 10); // 철수:10
        agesMap.put("영수", 20); // 영수:20
        agesMap.put("미애", 30); // 미애:30

        // 맵은 데이터 꺼낼 때 편하다.
        System.out.println(agesMap.get("철수"));
        System.out.println(agesMap.get("영수"));
        System.out.println(agesMap.get("미애"));

        System.out.println("== 맵 순회 ==");
        for (String key : agesMap.keySet()) {
            System.out.println(key + ":" + agesMap.get(key));

 

 

장점

  • 접근 쉬움 ➡️ key로 바로 꺼낼 수 있음
  • 검색 빠름 ➡️ 내부적으로 해시 기반이라 빠른 조회 ⭕️
  • key에 의미부여 가능 ➡️ <key, value> 구조 

 

단점

  • key 중복 불가
  • key 없이 접근 불가
  • 구조가 복잡할 수 있음 

 

 

⚙️ List 🆚 Map

리스트는 넣을 때 편하고, 맵은 꺼낼 때 편하다

항목 List 단점 Map 단점
데이터 꺼내기 인덱스를 알아야 함 → ❌ 불편 키를 알아야 함 → ❌ 키 중복 불가
삭제/변경 인덱스 조작 필요 키를 잊으면 접근 불가
의미 부여 단순한 순서만 가짐 구조가 복잡할 수 있음

 

✅ 리스트는 "많이 넣고 순서대로 처리"할 때 유리

✅ 맵은 "특정 키로 빠르게 찾고 싶을 때" 유리





728x90
반응형

'✏️공부 > 💡JAVA' 카테고리의 다른 글

[JAVA] JAVA 기초 | 상속(extends), 추상 클래스 (abstract), Getter / Setter  (4) 2025.08.06
[JAVA] JAVA 기초 | static, 상속 (extends) | 예제 문제 ⭕️  (4) 2025.08.05
[JAVA] JAVA 기초 | 클래스, 함수, 전역변수 vs 인스턴스 변수  (0) 2025.08.01
[JAVA] JAVA 기초 | 원시타입 vs 참조타입, 반복문, 조건문 등  (4) 2025.08.01
[JAVA] 백트래킹(Backtracking) | 개념, 동작 흐름, 예시 ⭕️  (3) 2025.07.10
'✏️공부/💡JAVA' 카테고리의 다른 글
  • [JAVA] JAVA 기초 | 상속(extends), 추상 클래스 (abstract), Getter / Setter
  • [JAVA] JAVA 기초 | static, 상속 (extends) | 예제 문제 ⭕️
  • [JAVA] JAVA 기초 | 클래스, 함수, 전역변수 vs 인스턴스 변수
  • [JAVA] JAVA 기초 | 원시타입 vs 참조타입, 반복문, 조건문 등
망꼬누나
망꼬누나
공부한 내용을 정리하는 공간입니다.
  • 망꼬누나
    망꼬누나의 개발 공부
    망꼬누나
  • 전체
    오늘
    어제
    • 분류 전체보기 (165)
      • ℹ️ 정보 및 실습 (19)
        • ☑️ Git & GitHub (8)
        • ☑️ 프로젝트 (6)
        • ☑️ 회고 및 후기 (5)
      • 🛠 CS (1)
      • 💻코딩 (88)
        • 💡Baekjoon (17)
        • 💡Programmers (71)
      • ✏️공부 (48)
        • 💡OS (1)
        • 💡Network (6)
        • 💡SpringBoot (9)
        • 💡JAVA (21)
        • 💡SQL (1)
        • 💡DB (2)
        • ☁️ Cloud (4)
        • 💡알고리즘 (4)
      • 📌 자격증 (6)
        • 📝정보처리기사 (3)
        • 📝SQLD (3)
  • 블로그 메뉴

    • 홈
    • github
  • 나의 GitHub Contribution 그래프
    Loading data ...
  • 인기 글

  • 태그

    프로그래머스
    데브코스
    트랜잭션
    동시성제어
    코딩테스트
    map
    Stream
    프로그래머스 #JAVA
    GIT
    baekjoon
    Java
    자바
    AWS
    백엔드
    알고리즘
    S3
    github
    자료구조
    Set
    네트워크
  • 최근 댓글

  • 최근 글

  • 250x250
    반응형
  • hELLO· Designed By정상우.v4.10.5
망꼬누나
[JAVA] JAVA 기초 | 배열, 리스트(ArrayList<>) , 맵(Map<>), 제네릭
상단으로

티스토리툴바