마트철수
[037] Java: 제네릭, 컬렉션 자료구조 본문
2024.07.01(월)
JAVA 9일차
클래스는 필드, 생성자, 메서드 → #필생메
상속은 메소드 오버라이딩, 다형성, 추상 → #메오다추
문자열은 String 타입 → substring, indexOf, split
main 메소드(혹은 생성자) 안에 위치하면 → 로컬 클래스
ch13 제네릭
장점보다 단점이 많음
그래서 컬렉션으로 그 단점을 보완할 수 있음
제너릭이란
: 결정되지 않은 타입을 파라미터로 처리
#Object로 모든 객체가 참조할 수 있도록 선언하면, 다운캐스팅할 때 instance of로 검사하고 호출해야함
#이러한 어려움을 줄여주기 위한 기능이 제네릭
<T>: T가 타입 파라미터임을 뜻하는 기호
public T content; ... 데이터 타입으로 선언
Box<Integer> box = new<Integer>( ); ... 업캐스팅, 다운캐스팅 필요없음
Primitve에는 사용 불가 / 참조형에만 가능 ex) Box<int> 불가
제너릭 메소드
: 특정 메소드에만 적용시키는 제너릭

→ 리턴타입 앞에 정의
제한된 타입 파라미터
: 모든 타입이 아닌,자식 또는 구현 관계에 있는 타입만 대체할 수 있는 타입 파라미터
: 인스턴스 변수 .getClass( ); 로 가져옴 ... ex) ti.getClass( )
상속 관계 이용 #extends(자식) #super(부모)
ch15 컬렉션 자료구조
컬렉션 프레임워크
: 널리 알려진 자료구조를 바탕으로 관련 인터페이스와 크래스들을 포함시켜 놓은 java.util 패키지
List 컬렉션
: 객체를 인덱스로 관리함
- boolean add(E e), E get(int index), int size( )
- boolean contains(Object o), boolean remove(Object o) ... equals( ) 구현되어 있어야함
ArrayList

//모든 객체를 하나씩 가져오기
for(int i = 0; i < list.size( ); i++ ){
...
for( Board b : list ) {
...
Vector
#두 번째 구현체 #동기화시켜서 락을 건다(syncronized)
: 멀티 스레드 환경엣서 안전하게 객체 추가 또는 삭제 가능
→ 비권장
LinkedList
: 인접 객체를 체인처럼 연결해서 관리
: 객체 삭제와 삽입이 빈번한 곳에서 유리함 (ArrayList의 단점 보완)
Set 컬렉션
: 저장 순서 유지 X / 객체 중복 저장 X / 하나의 null만 저장 가능
HashSet
: 동등 객체를 중복 저장하지 않음
LinkedHashSet
: 순서 유지됨
Map 컬렉션
: 키와 값으로 구성된 엔트리 객체를 저장
#Map.Entry = Map 클래스 안에 있는 Entry
Map<K, V> map = new HashMap<K, V>( );
Map<String, Integer> map = new HashMap<String, Integer>( );
→ key는 Hashcode, equals( )가 정의되어있어야함
!이전에 배웠던 개념!
advances for문(향상된 for문)
: for(String key: map.keySet( )){
Map할 때 key는 문자열로 구성함(value는 계속 변함)
Properties
: 키와 값을 String 타입으로 제한한 컬렉션 ... Map<string, string>와 같은 특수한 경우
해당 내용으로 실습하며 내용 추가 예정
이후부터는 정렬에 대한 내용임
!이전에 배웠던 내용!
배열 정렬: Array.sort( )
실습
package ch13.sec02.exam01; public class Product
1. ch13.sec02.exam02 혼자 꼭 다시 한 번 작성해보기!
2. Set 부분 강의 다시 듣기
'KB IT's Your Life > 교육' 카테고리의 다른 글
| [039] Java: 람다식, 스트림 (1) | 2024.07.04 |
|---|---|
| [038] Java: 컬렉션 자료구조 (1) | 2024.07.04 |
| [036] 프로그래머스: 완주하지 못한 선수, 소수 만들기, 예산 (1) | 2024.06.28 |
| [035] Java: 포장클래스, 멀티 스레드 (0) | 2024.06.27 |
| [034] 예외 처리, Object Class (1) | 2024.06.26 |