[Java] CollectionAPI 와 Comparable vs Comparator

JOY·2023년 3월 8일
0

[Java]

목록 보기
9/15
post-thumbnail

데이터를 저장하는 방법

1) 변수 : 한가지 타입에 한가지 값만 저장
2) 배열 : 한가지 타입에 여러개의 값을 저장
데이터조작에 불편하다(삽입, 삭제, 수정,검색)
배열은 사이즈가 변경될수 없다!!

자료구조

: 데이터를 저장하는 구조, Collection Framework

  • import java.util.* ; 제공
  • 객체만 저장가능하고 다양한 데이터타입 저장 가능.
  • 자료구조 공간의 크기가 늘어난다
  • 데이터를 저장하는 방식에 따라 이미 필요한 객체나 interface를 만들어서
    풍부하게 제공을 한다. 사용자인 우리는 만들어 놓은 객체 또는 interface 를 가져다 사용하면
    데이터조작을 손쉽게 할수 있다.(ex) 등록, 수정, 삭제, 검색......)
    : 제공된 메소드를 최대한 이용하여 작성하면 코딩은 간결하고 하는일 더 많이 할수 있다

제공되는 interface

: 각 인터페이스들의 구현클래스 제공

1) List : 순서(index) 있고 중복 가능. (직접 사용 X)
구현객체제공(class) - ArrayList, Vector, LinkedList,....
2) Set : 순서 없고, 중복 안됨.
구현객체 - HashSet,
TreeSet : element를 정렬(Sorting)해준다
3) Map : key와 value의 한쌍으로 이루어지며
key는 중복안되고 value는 중복가능하다 (Entry Set)
구현객체 - HashMap, Hashtable, TreeMap, Properties...

자바는 primitiveType 8가지를 객체로 변환해주는 Wrapper클래스를 제공한다! - java.lang.

  • List 관련 메소드
  1. 추가하기
~.add(Object obj)
  1. 가져오기
Object obj = ~.get(int index)
  1. 저장된 객체의 개수
int size = ~.size();
  1. 제거
remove(int index); - index는 0부터 시작
remove(Object obj);

Comparable vs Comparator

  • Comparable과 Comparator는 모두 인터페이스(interface)
  • Comparable 혹은 Comparator을 사용할때 인터페이스 내에 선언된 메소드를 반드시 재정의 필수.
  • 객체를 비교할 때 사용한다.
  • Comparable은 자기 자신과 매개변수 객체를 비교함
  • Comparator는 두 매개변수 객체를 비교 함.
  • Comparable은 lang패키지에 있기 때문에 import 를 해줄 필요가 없지만,
    Comparator는 util패키지에 있기때문에 반드시 import 필수

1)

   Interface Comparable<T>
      : int compareTo(T o)
       Parameters:
          o - the object to be compared.
      Returns:
         a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.

ex) 자신(기준)과 인수 비교시
결과 : 음수 이면 인수가 크다.
0이면 자신과 인수가 같다.
양수이면 자신이 크다

ex)사원번호 기준 정렬
자신.사원번호 - 인수.사원번호
5-2 = 3 ? : 양수
5 - 5 : 0

Comparable의 compareTo는 자기 자신과 매개변수를 비교한다고 했고,
compareTo는 정수를 반환하며, 자기 자신을 기준으로 상대방과의 차이 값을 비교하여 반환함.

2)

Interface Comparator<T>
      : 메소드가 많지만 대부분 static, default

  

  
      :  int compare(T o1,  T o2)

          Parameters:
              o1 - the first object to be compared.
              o2 - the second object to be compared.
              
          Returns:
              a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.

재귀함수 - Recursive

자신 안에서 자기자신 호출 ,
무한루프가 돌기 때문에 재귀를 빠져나갈 수 있는 코드를 작성해줘야함

public void test(){
	기능;
    test(); 재귀
}

stacl 영역에 쌓이기 떄문에 많이 도는게 단점
정해져있는 룰대로 값들이 정해져있기 때문에 값들의 모호한 변화가 극소수
stackoverflow 발생 시 메모리를 차지하더라도 반복문 사용
-> 반복문
: heap 영역에 데이터가 쌓이고
: 코드 작성시 i 값들의 변화가 재귀함수보다 많음

자바의 메소드들은 스택에 쌓이면서 순서대로 호출

profile
Just Do IT ------- 🏃‍♀️

0개의 댓글