Java

Java - generic & collection Framework

MoonGa 2023. 4. 11. 00:02

object는 어떤 객체든 참조할 수 있음.

 

GenericBox

  • T는 제네릭과 관련된부분
  • 제네릭은 클래시이름 뒤, 메소드의 리턴타입 앞에 붙을 수 있음.
  • <T>부분은 T라는 이름의 제네릭 타입을 선언한다는 것.(T는 사용자 정의, Type의 약자)
  • 정해진 타입만 사용하도록 강제할 수 있음.
  • 타입을 강제함으로써 컴파일할때, 잘못된 타입의 값이 저장되는것을 막을 수 있음.
  • 형변환을 할 필요가 없음.

 

Collection Framework

  • java Collections Framework라고도 불리며, 데이터를 다루 때 반드시 필요한 클래스의 모음임.
  • 앞은 인터페이스 타입으로 사용하고, 뒤에 인스턴스만드는 부분만 클래스 타입으로 설정하는 것이 좋은 프로그래밍 방법.
  • 즉, 클래스를 이용할 때는 인터페이스를 사용하는 것이 객체지향적으로 맞는것.
  • 무조건 인터페이스를 먼저 선언하는 습관을 들이기!!

Collection Framework의 핵심 인터페이스

  • 5개의 인터페이스가 존재
  • Collection 인터페이스이는 add, size, iterator 메소드를 가지고 있음.
  • Iterator 인터페이스는 hasNext, next메소드를 가지고있음(hasnext로 꺼낼께 있는지 체크하고,next가 다음것을 꺼내는 것) --> 모든 것을 꺼내기위한 패턴, 점선화살표는 의존한다는 것, 즉 collection은 모든것을 꺼내기 위해서 iterator에 의존한다는 의미
  • Collection 인터페이스를 상속받고 있는 인터페이스는 List, Set
  • List는 collection을 상속받기에 해당 메소드도 다 가지고 있음, list는 순서를 기억하는 자료구조임, 꺼낼때 get으로 순서를 받아들여서 꺼낼 수 있음(배열처럼)
  • Set 인터페이스는 중복을 허용하지 않는다는 것을 표현함, 같은 값이 들어오면 한건만 저장을 함, 
  • Map 인터페이스는 key와 value로 구성된 자료구조임, put으로 저장됨, 첫번째 매개변수는 key, 두번째는 value임, keyset메소드를 호출하면 set이나오고 set안에는 key들만 들어있음
  • list인터페이스를 구현하고 있는 대표적인 클래스는 ArrayList임.
  • Set인터페이스를 구현하고있는 대표적인 클래스는 HashSet임.
  • Map인터페이스를 구현하고 있는 대표적인 클래스는 HashMap임.

Java.util.Collection 인터페이스

  • 컬렉션 프레임워크에서 가장 기본이 되는 인터페이스.
  • 해당 인터페이스는 순서를 기억하지 않고, 중복을 허용하여 자료를 다루는 목적으로 만들어짐.

Java.util.List 인터페이스

  • 순서가 중요한 자료를 다룰 때 사용하는 인터페이스.
  • Collection을 상속받아 collection이 가지고 있는 add(), size(), iterator()메소드 사용가능.
  • 순서를 알고 있다고 가정하기에, 특정 순서로 저장된 자료를 꺼낼 수 있는 get(int)메소드 가지고 있음.

Java.util.Set 인터페이스

  • 중복을 허용하지 않은 자료 다룰 때 사용하는 인터페이스.
  • 즉, 같은 값을 저장할 수 없다는 의미 = 같은 값을 여러번 추가해도 마지막 값 하나만 저장됨.
  • Set 인터페이스에 저장되는 객체들은 Object가 가지고 있는 equals()메소드와 hashCode()메소드를 오버라이딩해야함.
  • 순서 보장안함.
  • 저장된 값이 저장이 잘 된지 확인하거나 중복된 값인지 체크하기 위해선, add메소드를 사용할때 값을 리턴받고(boolean 변수명) 검사가능.
  • hash라는 알고리즘이 나오면 object가 가지고 있는  equals()와 hashcode()메소드를 오버라이딩 해줘야함.

Java.util.Iterator 인터페이스

  • 자료구조에서 자료를 꺼내기 위한 목적으로 사용되는 인터페이스.
  • Iterator패턴을 구현하고 있음.

 

Java.util.map 인터페이스

  • key와 value를 함께 저장하기 위한 목적으로 만들어진 인터페이스
  • 같은 key값으론 하나의 값만 저장가능.(기존의 Key값을 덮어씀. = 같은 key값에 value가 다르게 저장될 경우)