컬렉션 자료구조(2)_comparable과 comparator

Korangii·2024년 7월 2일
0

Java

목록 보기
16/24
post-thumbnail

leaf 노드 : 자식에 대한 참조가 null인 경우


comparable과 comparator

comparable

  • compareTo 메소드를 반드시 구현
  • 자기 자신과 매개변수 객체를 비교
  • import할 필요 없음 (lang 패키지에 존재)

comparator

  • compare 메소드를 구현
  • 들어온 두 개의 매개변수 객체끼리 비교
  • import 필요함 (util 패키지에 존재)
  • 익명 객체(클래스)를 활용-변수 생성없이 Comparator비교 기능만 따로 두고 싶을 때 사용

import java.util.Comparator;

public class FruitComparator implements Comparator<Fruit> {
  @Override
  public int compare(Fruit o1, Fruit o2) {
    if(o1.price < o2.price) return -1;
    /* return o1.price - o2.price; // int
    return o1.name.compareTo(o2.name); // 과일명 */
    
    else if(o1.price == o2.price) return 0;
    else return 1;
  }
}
import java.util.TreeSet;

public class ComparatorExample {
  public static void main(String[] args) {
    //비교자를 제공한 TreeSet 컬렉션 생성
    TreeSet<Fruit> treeSet = new TreeSet<Fruit>(new FruitComparator());
    /* 익명 구현객체
     new Comparator() {compare() {}}
     price와 fruit으로 내보내보기 */

    //객체 저장
    treeSet.add(new Fruit("포도", 3000));
    treeSet.add(new Fruit("수박", 10000));
    treeSet.add(new Fruit("딸기", 6000));
    
    //객체를 하나씩 가져오기
    for(Fruit fruit : treeSet) {
      System.out.println(fruit.name + ":" + fruit.price);
    }
  }
}

stack

짝이 맞을 경우
1. pop할 게 없는 경우
2. 스택이 비어있는 경우


SOLID
OCP 위배


동기화된 컬렉션

  • 스레드와 연관있음
  • vector와 hashTable

  • 배열을 리스트로 변경 : ArrayList - static 메서드, 변경불가 list
    변경가능한 list를 만들고 싶으면, new ArrayList()로 만들기

  • 리스트를 배열을 변경 : toArray()로 만들기

  • Map -> List로 만들고 정렬하기 : Entry<k,v> 활용하기


HashMap

  • 키 중복 안됨
  • 값은 중복 가능
  • 키를 통해 값을 접근함
  • iterator() : 컬렉션에 저장되어있는 요소들을 순회하는 인터페이스
  • <Entry k,v> : 키와 값을 모두 가져온다.
  • 키를 통해 엔트리 삭제
profile
https://honeypeach.tistory.com/ 로 이전했습니다.

0개의 댓글