본문 바로가기

웹 백엔드/패스트캠퍼스) 백엔드시그니처

패스트캠퍼스) 백엔드시그니처 Course2: Collection Framwork

728x90
반응형

Ch 01. 모아, 모아 컬렉션(Collection) API

01. Wrapper 클래스란

  • Wrapper 클래스: 기본 데이터 타입(예: int, double)을 객체로 감싸는 클래스.
  • 목적: 컬렉션 프레임워크(List, Set, Map 등)과 함께 사용할 때 객체만 저장 가능하므로 기본형을 객체로 변환.
  • 예시:
int num = 10;
Integer wrappedNum = Integer.valueOf(num); // Boxing
int unwrappedNum = wrappedNum.intValue();  // Unboxing
  • 자동 변환:
Integer autoBoxed = num;  // Auto-Boxing
int autoUnboxed = autoBoxed;  // Auto-Unboxing

02. 숫자와 문자열의 상호 변환

  • 숫자 → 문자열 변환:
int number = 123;
String str = String.valueOf(number);
  • 문자열 → 숫자 변환:
String str = "123";
int number = Integer.parseInt(str);

03. Collection Framework API란

  • 컬렉션 프레임워크: 데이터를 효율적으로 관리하기 위해 제공되는 Java의 표준 API.
  • 주요 인터페이스 및 클래스:
    • List: 순서 있음, 중복 허용 (예: ArrayList, LinkedList).
    • Set: 순서 없음, 중복 불가 (예: HashSet, TreeSet).
    • Map: 키-값 쌍 관리 (예: HashMap, TreeMap).

04. 순서가 있고 중복 가능한 List API

  • List 인터페이스: 데이터의 순서를 유지하며 중복을 허용.
  • 주요 메서드:
    • add(): 데이터 추가.
    • remove(): 데이터 삭제.
    • get(): 특정 위치 요소 반환.
    • size(): 요소 개수 반환.
  • 예시:
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Apple"); // 중복 허용
System.out.println(list.get(0)); // Apple 출력

05. 순서가 없고 중복 불가능한 Set API

  • Set 인터페이스: 중복 요소를 허용하지 않으며 순서가 유지되지 않음.
  • HashSet 예시:
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple"); // 중복 무시됨
System.out.println(set.size()); // 2

06. Key-Value로 관리하는 Map API

  • Map 인터페이스: 키(Key)-값(Value) 형태로 데이터 관리.
  • 주요 메서드:
    • put(key, value): 키-값 추가.
    • get(key): 키에 해당하는 값 조회.
    • remove(key): 키-값 삭제.
  • HashMap 예시:
Map<String, Integer> map = new HashMap<>();
map.put("Apple", 10);
map.put("Banana", 20);
System.out.println(map.get("Apple")); // 10 출력

Ch 02. 자바 제네릭(Generic)이란

01. 왜 제네릭을 사용해야 하는가?

  • 제네릭(Generic): 데이터 타입을 일반화하여 코드 재사용성과 안전성을 보장.
  • 장점:
    1. 타입 안전성(Type Safety) 제공.
    2. 코드의 재사용성 증가.
  • 예시:
List<String> list = new ArrayList<>();
list.add("Apple");
// list.add(10); // 컴파일 오류 발생

02. 자바 제네릭 타입이란

  • 제네릭 타입: 클래스나 메서드의 데이터 타입을 런타임이 아닌 컴파일 타임에 결정.
  • 예시:
class Box<T> {
    private T item;
    public void setItem(T item) { this.item = item; }
    public T getItem() { return item; }
}
Box<String> box = new Box<>();
box.setItem("Apple");
System.out.println(box.getItem()); // Apple 출력

03. 제네릭 멀티 타입 파라미터

  • 멀티 타입 파라미터: 제네릭에 여러 타입을 지정할 수 있음.
  • 예시:
class Pair<K, V> {
    private K key;
    private V value;

    public Pair(K key, V value) {
        this.key = key;
        this.value = value;
    }
    public K getKey() { return key; }
    public V getValue() { return value; }
}
Pair<String, Integer> pair = new Pair<>("Apple", 10);

 


04. 제네릭 제한된 타입 파라미터

  • 제한된 타입: 특정 타입 또는 그 하위 클래스만 허용.
  • 예시:
class Calculator<T extends Number> {
    public double sum(T a, T b) {
        return a.doubleValue() + b.doubleValue();
    }
}
Calculator<Integer> calc = new Calculator<>();
System.out.println(calc.sum(10, 20)); // 30.0 출력

Ch 03. 람다와 스트림 API 활용하기

01. 함수형 인터페이스 (Functional Interface)

  • 함수형 인터페이스: 단 하나의 추상 메서드를 가진 인터페이스.
  • 예시:
@FunctionalInterface
interface MathOperation {
    int operate(int a, int b);
}
MathOperation addition = (a, b) -> a + b;
System.out.println(addition.operate(10, 20)); // 30

02. 함수형 인터페이스 메서드 참조

  • 메서드 참조 예시:
Function<String, Integer> toLength = String::length;
System.out.println(toLength.apply("Apple")); // 5 출력

 


03. 람다식이란 무엇인가?

  • 람다식 예시:
List<Integer> nums = Arrays.asList(1, 2, 3);
nums.forEach(n -> System.out.println(n));

04. 람다식의 사용방법

  • 람다식을 메서드 매개변수로 활용.
public static void process(List<Integer> list, Consumer<Integer> processor) {
    for (Integer num : list) {
        processor.accept(num);
    }
}
process(nums, n -> System.out.println(n * 2)); // 각 요소를 2배 출력

05. Stream API의 이해

  • 스트림: 데이터 흐름을 처리하는 Java 8 기능.
  • 예시:
List<String> list = Arrays.asList("a", "b", "c");
list.stream().map(String::toUpperCase).forEach(System.out::println);

06. Stream API의 활용

  • 예제: 짝수만 필터링 후 제곱한 값의 합 구하기.
 
int sum = Arrays.stream(new int[]{1, 2, 3, 4})
    .filter(n -> n % 2 == 0)
    .map(n -> n * n)
    .sum();
System.out.println(sum); // 20 출력
728x90
반응형