Collections(Collection과 다름!!!)

Jay·2023년 8월 27일

Java

목록 보기
3/6
  • Collections(Collection과다름!!!)
    // 이 클래스는 컬렉션에서 작동하거나 반환하는 정적 메서드로만 구성됨
    // 컬렉션에서 작동하는 다형성 알고리즘이 포함됨
    // Collection과 Colletions는 다른것이다
    // 정적(static)메서드이므로 인스턴스화 불필요
    // Collections는 클래스이다!!
    // Collection인터페이스를 구현한 클래스에 대한 객체생성,정렬,병합등의 기능을 안정적으로 수행하도록 도와주는 역할

    주요 method()

    메소드설명쓰는법
    max지정된 컬렉션에서 최대 요소를 반환한다. (인덱스 X)
    min지정된 컬렉션에서 초소 요소를 반환한다. (인덱스 X)
    sort지정된 컬렉션을 정렬시킨다.오버로드 메소드들이 존재하며 가장 기본적인 메소드는 자연순서에 따라 내림차순으로 정렬된다.Collections.sort(list)
    shuffle지정된 컬렉션의 요소들의 순서를 무작위로 섞는다.Collections.shuffle(list)
    synchronizedCollection지정된 컬렉션에 의해 지원되는 동기화 된 컬렉션을 재생성해 반환한다.
    binarySearch지정된 컬렉션에서 이진 탐색 알고리즘을 사용해 지정된 객체를 검색해 인덱스를 반환한다.Collections.binarySearch(list,element(탐색할원소))
    disjoint2개의 지정된 컬렉션들에서 공통된 요소가 하나도 없는 경우 true 를 반환한다.
    copy지정된 켈렉션의 모든 요소를 새로운 컬렉션으로 복사해 반환한다.
    reverse지정된 컬렉션에 있는 순서를 역으로 변경한다.
    reverseOrderComparable인터페이스를 구현하는 객체 컬렉션에 자연순서(natural ordering)의 역순을 적용하는 comparator를 반환

    Sort()

    • List인터페이스를 구현하는 컬렉션에 대하여 정렬을 수행

    • Collections.sort()는 list / Arrays.sort()는 array에 사용된다

    • 들어가는 값이 Date타입이면 시간적인 순서로 정렬
      - String클래스와 Date클래스 모두 Comparable 인터페이스를 구현하기 때문에
      - 정렬은 Comparable 인터페이스를 이용하여 이루어진다
      - List인터페이스는 Comparable인터페이스를 상속하므로 정렬이 가능하다
      - comparaTo()메서드는 매개변수 객체를 현재의 객체와 비교하여 음수,같으면0,크면 양수를 반환

      shuffle()

    • list에 존재하는 정렬을 파괴하여서 원소들의 순서를 랜덤하게 만든다

    • 정렬과 반대 동작을 한다

      binarySearch()

    • Collections클래스는 정렬된 리스트에서 지정된 원소를 이진 탐색

    • “정렬된 리스트” 에 한해서 탐색을 진행한다는 점을 명심!!!

      • 선형 탐색 : 처음부터 모든 원소를 방문하는 탐색 방법으로, 리스트가 정렬되어 있지않은 경우 사용됨

      • 이진 탐색 :

        • 리스트가 정렬되어 있는 경우 중간에 있는 원소(n)와 먼저 비교하여, 크면 그 다음부터(n+1)끝까지 비교하고,
        • 작으면 처음부터 그 전(n-1)까지의 원소들과 비교하여 방식을 반복하여 하나의 리스트를 계속해서 두 개의 리스트로 분할
        • 리스트에 하나의 원소가 남을 때까지 반복된다
        • 이진탐색은 문제의 크기를 반으로 줄일 수 있기 때문에 선형 탐색보다 효율적
      • 반환값이 양수이면 찾고자 하는 원소의 인덱스값을 출력

      • 음수이면 탐색이 실패하여 원소를 찾지 못했음을 의미

      • 단, 실패하더라도 도움이 되는 정보를 반환한다

      • 반환값에는 현재의 데이터가 삽입될 수 있는 위치정보가 들어있다

      • 반환값이 pos라고 한다면, (-pos-1)이 해당 데이터를 삽입할 수 있는 위치이다.

        // -pos-1이 데이터 삽입 가능 index이다.
        int pos = Collections.binarySearch(list, key);
        if(pos < 0) list.add(-pos-1);

0개의 댓글