기초 뽀개기 - 제네릭스

Clean Code Big Poo·2025년 4월 20일
0

Java

목록 보기
9/15
post-thumbnail

Overview

자바 무료강의 2시간 완성을 시청하고 간략히 정리

제네릭스

다양한 형태의 데이터를 일반화하여 다룰 수 있게 하는 것

  • 코드의 재사용성을 높힘
  • 타입 안정성을 확보함

제네릭스

사용 방법

T 변수명

예제

public class Main {
    public static void main(String[] args) {
        int intValue = 3;
        double doubleValue = 3.14;
        String stringValue = "안녕";

        printValue(intValue);
        printValue(doubleValue);
        printValue(stringValue);
    }

    public static <T> void printValue(T value){
        System.out.println(value);
    }
}

제네릭스 클래스

제네릭 기반 클래스

  • 다양한 데이터 유형을 처리할 수 있도록 설계된 클래스

사용 방법

class 클래스명<T>{

}

예제

class Box<T>{
    T data;
    public void setData(T data){
        this.data = data;
    }
}

Wrapper 클래스

기본 자료형을 객체로 감싸는 형태의 클래스

  • 추가 기능을 제공하는 클래스. 메소드 제공한다.

사용 방법

// 클래스이므로, 가장 앞 글자가 대문자이다.
Integer -> int
Double -> double
Character -> char

예제

public class Main {
    public static void main(String[] args) {
        int intValue = 3;
        double doubleValue = 3.14;
        char stringValue = 'a';

        Integer intValue2 = 3;
        Double doubleValue2 = 3.14;
        Character stringValue2 = 'c';

        System.out.println(intValue2.intValue());
        System.out.println(doubleValue2.intValue()); // 정수 변환
        System.out.println(stringValue2.charValue());
    }
}

ArrayList

배열 기반의 리스트, 빠른 접근 가능, 순차적으로 데이터 저장이 가능

사용 방법

ArrayList<T> // T에 데이터 타입

예제

public class Main {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("철수");
        list.add("영희");

        System.out.println(list.toString());
    }
}

기능

기능설명예시결과
add추가list.add("철수"){"철수"}
get가져오기list.get(0);"철수"
size크기list.size();1
set수정list.set(0,"영희");{"영희"}
contains포함 여부list.contains("영희");true
remove삭제list.remove("영희");{}
clear전체 삭제list.clear();{}

LinkedList

연결 리스트. 노드로 연결되어 있어, 데이터의 빠른 삽입과 삭제가 가능

사용 방법

LinkedList<T>

예제

public class Main {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();
        list.add("철수");
        list.add("영희");

        System.out.println(list.toString());
    }
}

기능

기능설명예시결과
add추가list.add("철수"){"철수"}
get가져오기list.get(0);"철수"
getFirst처음 요소 가져오기list.getFirst();"철수"
getLast마지막 요소 가져오기list.getLast();"철수"
addFirst맨 앞에 추가list.addFirst("영희");{"영희","철수"}
addLast맨 뒤에 추가list.addLast("영철");{"영희","철수","영철"}
clear전체 삭제list.clear();{}

HashSet

순서, 중복을 허용하지 않는 데이터 집합

사용 방법

HashSet<T>

예제

public class Main {
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<>();
        set.add("철수");
        set.add("영희");
        set.add("영희"); // 중복 허용되지 않아 "영희"는 하나만 존재

        System.out.println(set.toString());
    }
}

기능

기능설명예시결과
add추가set.add("철수"){"철수"}
contains포함 여부set.contains("영희");false
size크기set.size();1
remove삭제set.remove();{}
clear전체 삭제set.clear();{}

HashMap

key, value로 이루어진 자료구조
중복 X, 순서 X

사용 방법

HashMap<K, T>

예제

public class Main {
    public static void main(String[] args) {
        HashMap<String, Integer> set = new HashMap<>();
        set.put("철수", 100);
        set.put("영희", 90);
        set.put("영희", 80); // 중복을 허용하지 않아. 마지막 "영희" 만 존재.

        System.out.println(set.toString());
        // {철수=100, 영희=80}
    }
}

기능

기능설명예시결과
put추가map.put("철수", 70){철수=70, 영희=80}
size크기map.size();2
get가져오기map.get("철수");70
containKeyKey 포함 여부map.containKey("영철");false
remove삭제map.remove("철수");{영희=80}
clear전체 삭제map.clear();{}

Iterator

컬렉션의 모든 데이터를 순차적으로 접근하기 위해 사용

사용 방법

Iterator<T> //순회 대상 데이터 타입

예제

public class Main {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("철수");
        list.add("영희");

        Iterator<String> it = list.iterator();
        while (it.hasNext()){ // 다음 요소가 있다면 
            System.out.println(it.next());
        }
    }
}

기능

Iterator it = list.iterator();

기능설명예시결과
hasNext다음 요소 확인it.hasNext()true
next포함 다음 요소 가져오기it.next();"철수"
remove삭제it.remove();{}

0개의 댓글