제너릭
데이터 저장을 위해 배열을 사용할 때마다 저장할 데이터 타입에 따라 다른 클래스를 만들어줘야 하는 문제를 최상위 부모 클래스인 Object를 사용함으로써 해결하려함.  (Object[] 참조변수 = new 자식클래스[])
그러다 오브젝트를 통해 기본 데이터타입을 배열에 넣을때 생기는 불편함이 발생.
(기본 형식(int,float 등)은 참조할 수 없기에 꺼내거나 넣을때마다 참조변수로 일일히 타입캐스팅 해야함 )
이를 개선하기 위해 만들어진 wrapper 클래스와 auto boxing/unboxing 기능(int를 알아서 integer 등의 참조변수 형식으로 형변환,풀어주는 기능)과 그래도 남아있는 불편함을 해소하기 위한 제너릭의 탄생.
(서비스 함수에서 참조타입을 받아오고 리턴해주는 부분에서 제너릭을 활용함으로써 하나의 데이터타입 또는 객체로
다양한 타입의 데이터를 저장 가능)
작성해야할 오버라이딩 된 상속클래스는 줄이고 재사용(jar) 가능하게 함으로써 소스를 줄일 수 있다

public class GList<T> {}

public T get(int index) {
  if (current <= index)
    throw new IndexOutOfBoundsException();
  return (T) nums[index];

 


컬렉션
Collection -> List, Set, Queue 과 다른 인터페이스를 쓰는 Map 이 존재함. 전부 인터페이스로 만들어져있으며
구현체는 각기 다른 내부 데이터구조 함수에 따라 사용할 수 있다.
검색 위주, 입력 위주에 따라 데이터구조를 바꿔주는게 성능에 좋기 때문에
개발 초기에는 ArrayList 등 간단한 배열데이터 구조를 사용해 개발 후 나중에 최적화된 구조로 바꿔준다.
링크드리스트는 입력 삭제가 많을 경우 좋지만, 검색은 각 객체 내부에 만들어진 포인터 변수인 넥스트|비포노드를 참조에 참조를 하는 형식으로 찾기에 데이터 검색이 느리다. 
도서 데이터처럼 검색이 많을 것으로 예상되는 데이터는 트리구조가 적합하나, 데이터 삽입은 느리다.

인스턴스화 객체로 자주 사용되는 녀석
List -> ArrayList 데이터 중복 가능, 식별자 존재 
Set -> HashSet 데이터 중복 불가, 중복이 불가능하기에 식별자가 값과 같음
Map -> HashMap 식별자가 데이터로써 존재. (key:key, data:data)

Map<String, Object> map = new HashMap<>();
map.put("title", abcd);

'Development > Java' 카테고리의 다른 글

Servlet #1  (0) 2022.08.11
Tomcat  (0) 2022.08.11
JDBC  (0) 2022.08.07
Java Thread & Sync  (0) 2022.08.04
이클립스에서 GitHub contribution 안되는 문제  (0) 2022.08.02

+ Recent posts