🤓천재교육 풀스택 1기 노트

천재교육 풀스택 과정 1기 Day13

개발자는신이야 2023. 5. 26. 17:48

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);
}
}

하지만 타입 변환에 따른 속도의 차이가 크게 발생함.

 

  • 잘못된 타입을 사용하는 것을 방지하기 위하여 사용
  • 타입 매개변수를 이용하여 코드 작성 시에 구체적인 타입을 적용할 수 있다
  • 장점
    • 컴파일시에 강한 타입 체크가 가능 -> 사전에 에러를 방지할 수 있음
    • 불필요한 타입 변환을 안 할 수 있다 -> 프로그램 성능에 악영향을 줌
    • 데이터 타입 변환을 안할 수 있다
    • 하나의 코드를 시울하여 여러 타입에 재사용
    • 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
  • ...