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): 데이터 타입을 일반화하여 코드 재사용성과 안전성을 보장.
- 장점:
- 타입 안전성(Type Safety) 제공.
- 코드의 재사용성 증가.
- 예시:
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
반응형
'웹 백엔드 > 패스트캠퍼스) 백엔드시그니처' 카테고리의 다른 글
패스트캠퍼스) 백엔드시그니처 Course 3 : 웹 개발 입문과 DB (0) | 2025.01.09 |
---|---|
패스트캠퍼스) 백엔드시그니처 Course 2: API 활용하기 (1) | 2025.01.03 |
패스트캠퍼스) 백엔드시그니처 Course 2: 자바 API활용하기 및 API 만들기 (0) | 2025.01.02 |
패스트캠퍼스) 백엔드시그니처 Course1: 객체지향 프로그래밍 (0) | 2024.12.30 |
패스트캠퍼스) 백엔드시그니처 Course1: 자바 기초 (0) | 2024.12.30 |