IT자료실/Java

Java(java.util 클래스, java collection, Generic)

Ramda 2022. 4. 14. 23:44

Java.util 패키지

java.util.Date 클래스

  • 날짜 데이터를 이용하는 경우 사용한다.
  • new 를 이용해서 객체 생성하여 사용

java.util.Calender 클래스

  • Date 보다 더 정교하게 나온다.
  • Date를 주로 사용 (Calender는 너무 많은 정보)

자바의 Collection

  • 대표적으로 List, Set, Map이 있다.
  • List, Set은 Collection Interface를 상속받고, Map은 그자체가 최상위 인터페이스다.

java.util.List Collection

  • List에서 주로 사용하는 ArrayList가 있다.
  • List 컬렉션은 데이터를 등록할 때 순서 유지, 중복 허용이 된다.(데이터를 저장하고 관리하는 용도로 사용)ArrayList
  • 인덱스를 이용하여 데이터를 저장하고 관리한다는 점이 배열과 유사
  • 객체를 저장할 때는 add()메서드 사용
  • 데이터를 꺼낼 때는 get()메서드 사용
  • add() 메서드의 매개변수 타입이 Object이다
    (ArrayList에 데이터 저장 시 Object 타입으로 변환되어 저장)
  • Object 타입으로 저장되기 때문에 모든 타입의 데이터가 저장된다. (get()으로 꺼낼 때 원래 타입으로 변환해야 한다.)
  • 기본 생성자를 이용하여 생성하면 기본적으로 10개의 데이터만 저장할 수 있는 메모리가 생성된다.
  • ArrayList 메서드의 기능
    • .size() : 개수를 리턴
    • .add() : 객체를 등록
    • .get() : index 위치의 객체를 리턴
    • .remove() : index 위치의 객체를 삭제 후 반환

java.util.Set Collection

  • Set에서 주로 사용하는 HashSet이 있다.
  • Set 컬렉션은 데이터를 등록할 때 순서가 없고, 중복을 허용 안한다.

HashSet

  • List와 달리 중복을 허용하지 않는다
  • 객체의 동일성을 비교하기 위해서는 equals(), hashcode() 메서드가 오버라이딩 되어 있어야 한다.
    (그렇지 않으면 중복 허용하는 형태가 나올 수 있다.)

 

배열과 ArrayList, hashset은 언제 사용할까

  • 배열은 배열의 개수를 정확하게 알고 있을 때 사용한다.
  • 파일이 계속 추가 되거나 변경될 여지가 있으면 ArrayList or Hashset을 사용한다.
  • ArrayList는 중복허용하고 순서를 지킬 필요가 있을 때 결정해 쓴다.
  • Hashset은 중복이 없고 순서 상관이 없을 시 결정해 사용
  • 결과적으로 컬렉션을 사용하는 이유는 객체들을 컬렉션에 등록해놓고 계산 or 필요한 정보를 출력하려고 사용하는 것이다.

java.util.Map

  • 상속관계가 없다.
  • List, Set과 다르게 key, Value 형태로 데이터를 저장하고 관리하는 독특한 컬렉션
  • 만약 key 값이 중복되면 덮어쓴다.
  • Map은 검색 속도가 빠르다.
  • key 값은 중복을 허용하지 않고, Value 값은 중복을 허용한다.HashMap
  • ArrayList를 두개 붙여놓은 개념
  • 데이터를 저장할 때 put(Object key, Object value) 메서드를 사용
  • 데이터 검색 시 get(Object key) 메서드를 사용
  • key 값을 이용해서 불러오고, key을 이용해서 삭제한다.
  • key 값이나 value 값을 별도로 추출하여 사용할 수 있다.

제너릭 프로그래밍

  • 클래스에서 사용하는 변수의 자료형이 여러개 일수 있고, 추후에 그 클래스를 사용할 때 Object로 형변환 해야 사용할 수 있다.
  • 자료형 매개변수 T : 이 클래스를 사용하는 시점에 실제 사용할 자료형을 지정한다. (대표적으로 T 나 E를 쓴다.)
  • <> (다이아몬드 연산자) 안에 타입을 지정한다.
  • ArrayList 같은 Object를 상속받는 것에 대해 타입을 지정하는 것

<T extends 클래스> 사용하기

  • 상위클래스의 필요성
    • T 자료형의 범위를 제한할 수 있다.
    • 상위 클래스에서 선언하거나 정의하는 메서드를 활용할 수 있음
    • 상속을 받지 않는 경우 T는 Object로 변환되어 Object 클래스가 기본으로 제공하는 메서드만 가능