JAVA/클래스&인터페이스

[Java] Collection

katia 2023. 4. 6. 15:37

Collection Framework

  • 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합이다.
  • Collection Framework 는 Java 의 Interface 를 사용하여 구현한다.

 

Collection Interface

  • Iterator 인터페이스를 상속한 Collection은 가장 기본이 되는 인터페이스이다.
  • Collection 인터페이스는 ListSet, Queue인터페이스를 가지고 있다.
  • Collection 인터페이스를 사용하는 이유
    1. 일관된 API
    2. 프로그래밍 간편화
    3. 프로그램 속도 및 품질 향상
  • 아래와 같은 메소드 상속시킨다.
메소드 설명
boolean add(E e) 해당 Collection에 전달된 요소를 추가한다.(선택적 기능)
void clear() 해당 Collection의 모든 요소를 초기화한다.(선택적 기능)
boolean contains(Object o) 해당 Collection이 전달된 객체를 포함하는 지 여부를 반환한다.
boolean equals(Object o) 해당 Collection과 전달된 객체가 같은 지 여부를 반환한다.
boolean isEmpty() 해당 Collection이 비어있는 지 여부를 반환한다.
Iterator<E> iterator() 해당 Collection의 반복자를 반환한다.
boolean remove(Object o) 해당 Collection에서  전달된 객체를 제거한다.(선택적 기능)
int size() 해당 Collection의 요소의 총 개수를 반환하다.
Object[] toArray() 해당 Collection의 모든 요소를 Object타입의 배열로 반환한다.

 

Collections 클래스

  • Collection FraneWork에 속하는 클래스를 지원해주는 정적인 클래스이다.
  • 사용하기 위해 아래와 같이 선언합니다.
import java.util.Collections

정적 메소드

1. sort(List L)

  • 리스트 L을 오름차순으로 정렬한다.
public static void main(String[] args){
    // List의 Class중 ArrayList을 사용하여 코드작성
    ArrayList<Integer> list = new ArrayList<>();

    // 값 입력하기
    for(int i = 0; i < 10; i++){
        list.add(i);            // ArrayList 값 추가
    }

    // sort() 메소드를 이용한 정렬하기
    Collections.sort(list);        // 오름차순 정렬

    System.out.println(list);    // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]    
}

2. sort(List L, Collections.reverseOrder())

  • 리스트 L을 내림차순으로 정렬한다.
public static void main(String[] args){
    // List의 Class중 ArrayList을 사용하여 코드작성
    ArrayList<Integer> list = new ArrayList<>();

    // 값 입력하기
    for(int i = 0; i < 10; i++){
        list.add(i);            // ArrayList 값 추가
    }

    // sort() 메소드를 이용한 정렬하기
    Collections.sort(list, Collections.reverseOrder());        // 내림차순 정렬

    System.out.println(list);    // [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]    
}

3. max(List L), min(List L)

  • 리스트 L에서 최대/최소 값을 반환한다.
public static void main(String[] args){
    // List의 Class중 ArrayList을 사용하여 코드작성
    ArrayList<Integer> list = new ArrayList<>();

    // 값 입력하기
    for(int i = 0; i < 10; i++){
        list.add(i);            // ArrayList 값 추가
    }

    System.out.println(Collections.min(list));    // 0
    System.out.println(Collections.max(list));    // 9
}

4. shuffle(List L)

  • 리스트 L을 랜덤으로 섞어 준다.
public static void main(String[] args){
    // List의 Class중 ArrayList을 사용하여 코드작성
    ArrayList<Integer> list = new ArrayList<>();

    // 값 입력하기
    for(int i = 0; i < 10; i++){
        list.add(i);            // ArrayList 값 추가
    }

    // 랜덤으로 섞음
    Collections.shuffle(list);
    System.out.println(list);    // [0, 6, 1, 7, 8, 5, 3, 4, 9, 2]
}

5. binarySearch(List L, Key)

  • 오름차순으로 정렬된 리스트 L에서 이진검색을 통해 위치를 반환, 실패시 음수값을 반환한다.
public static void main(String[] args){
    // List의 Class중 ArrayList을 사용하여 코드작성
    ArrayList<Integer> list = new ArrayList<>();

    // 값 입력하기
    for(int i = 0; i < 10; i++){
        list.add(i);            // ArrayList 값 추가
    }

    Collections.sort(list);
    System.out.println(Collections.binarySearch(list, 5));    // 5
}

6. disjoint(List L1, List L2)

  • 두 리스트의 값이 완전히 다른지 검사한다, 하나라도 같은 값이 있으면 False 반환한다.
public static void main(String[] args){
    // List의 Class중 ArrayList, Stack을 사용하여 코드작성
    ArrayList<Integer> list = new ArrayList<>();
    Stack<Integer> stack = new Stack<>();

    // 값 입력하기
    for(int i = 0; i < 10; i++){
        list.add(i);    // ArrayList 값 추가
    }

    for (int i = 9; i >= 0; i--) {
        stack.push(i);     // Stack 값 추가
    }

    System.out.println(Collections.disjoint(list, stack));
}

'JAVA > 클래스&인터페이스' 카테고리의 다른 글

[Java] Double 클래스  (0) 2023.04.10
[Java] Long 클래스  (0) 2023.04.10
[Java] Integer 클래스  (0) 2023.04.10
[Java] Math 클래스  (0) 2023.04.10
[Java] String 클래스  (0) 2023.04.05