Object: Strin, int, double 등의 타입을 전부 대체 가능
package lecture0526;
public class Generic {
/*private static void printArray(Integer[] intArray) {
for (int i = 0; i < intArray.length; i++) {
System.out.print(intArray[i] + " ");
}
System.out.println();
}
private static void printArray(Double[] dblArray) {
for (int i = 0; i < dblArray.length; i++) {
System.out.print(dblArray[i] + " ");
}
System.out.println();
}
private static void printArray(String[] strArray) {
for (String s : strArray) {
System.out.print(s + " ");
}
System.out.println();
}*/
private static void printArray(Object[] objArray) {
for (Object o : objArray) {
System.out.print(o + " ");
}
System.out.println();
}
public static void main(String[] args) {
Integer[] intArray = {10, 20, 30, 40, 50};
printArray(intArray);
Double[] dblArray = {10.1, 20.2, 30.3, 40.4, 50.5};
printArray(dblArray);
String[] strArray = {"red", "blue", "green", "black", "yellow"};
printArray(strArray);
}
}
public class Generic {
/*private static void printArray(Integer[] intArray) {
for (int i = 0; i < intArray.length; i++) {
System.out.print(intArray[i] + " ");
}
System.out.println();
}
private static void printArray(Double[] dblArray) {
for (int i = 0; i < dblArray.length; i++) {
System.out.print(dblArray[i] + " ");
}
System.out.println();
}
private static void printArray(String[] strArray) {
for (String s : strArray) {
System.out.print(s + " ");
}
System.out.println();
}*/
private static void printArray(Object[] objArray) {
for (Object o : objArray) {
System.out.print(o + " ");
}
System.out.println();
}
public static void main(String[] args) {
Integer[] intArray = {10, 20, 30, 40, 50};
printArray(intArray);
Double[] dblArray = {10.1, 20.2, 30.3, 40.4, 50.5};
printArray(dblArray);
String[] strArray = {"red", "blue", "green", "black", "yellow"};
printArray(strArray);
}
}
하지만 타입 변환에 따른 속도의 차이가 크게 발생함.
- 잘못된 타입을 사용하는 것을 방지하기 위하여 사용
- 타입 매개변수를 이용하여 코드 작성 시에 구체적인 타입을 적용할 수 있다
- 장점
- 컴파일시에 강한 타입 체크가 가능 -> 사전에 에러를 방지할 수 있음
- 불필요한 타입 변환을 안 할 수 있다 -> 프로그램 성능에 악영향을 줌
- 데이터 타입 변환을 안할 수 있다
- 하나의 코드를 시울하여 여러 타입에 재사용
- casting이 필요한 곳에 별도의 형변환을 하지 않아도 자동으로 넣어준다
- 제네릭은 클래스형이 아니라 캐스팅의 표시일 뿐이다.
- JDK 1.5 이후부터 도입된 개념이다.
- 임시적인 자료형을 통하여 구현시에 타입에 자유도를 올리며, 객체로 사용 시에 엄격한 타입을 명시함으로써
- 더 객체지향적인 코딩을 할 수 있으며, 잘못된 형변환에 의한 실행타임의 오류를 벗어날 수 있다.
InstanceOf:
- 객체타입을 확인하는 연산자입니다.
- 형변환 가능여부를 확인하며 true/false 로 결과를 반환합니다.
자료구조의 기본(Set, List, Map)
Set
순서가 없고, 중복할 수 없는 집합 구조
- HashSet: 속도가 아주 빠름
- TreeSet: 정
List
꼬리를 물고 일렬로 나열하는 것과 같다. 순서 있고, 중복이 가능한 구조
- Vector: threadSafe 개념을 도입하여 속도가 느림
- Stack: :LIFO(후입선출)
- StackPointer
- ArrayList: threadSafe 개념을 도입하지 않아서 속도가 빠름
- LinkedList: Link(Thread)를 사용하여 node 연결을 사용
Map
키와 값으로 대상을 찾음. 키는 중복될 수 없다.
- HashMap
- Tree Map
- HashTable
- Properties
- ...
'🤓천재교육 풀스택 1기 노트' 카테고리의 다른 글
천재교육 풀스택 1기 DAY16 (0) | 2023.06.01 |
---|---|
천재교육 풀스택 과정 1기 Day15 (0) | 2023.05.31 |
천재교육 풀스택 과정 1기 Day12 (0) | 2023.05.25 |
천재교육 풀스택 과정 1기 Day11 (1) | 2023.05.24 |
천재교육 풀스택 과정 1기 Day10 (0) | 2023.05.23 |