자바 무료강의 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;
}
}
기본 자료형을 객체로 감싸는 형태의 클래스
- 추가 기능을 제공하는 클래스. 메소드 제공한다.
// 클래스이므로, 가장 앞 글자가 대문자이다.
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<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<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<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(); | {} |
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 |
containKey | Key 포함 여부 | map.containKey("영철"); | false |
remove | 삭제 | map.remove("철수"); | {영희=80} |
clear | 전체 삭제 | map.clear(); | {} |
컬렉션의 모든 데이터를 순차적으로 접근하기 위해 사용
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(); | {} |