본문 바로가기

개발

Java - 컬렉션 프레임웍(collections framework)

반응형

List : 순서가 있는 데이터의 집합. 데이터의 중복을 허용한다.
   ArrayList, LinkedList, Stack, Vector 등

Set : 순서가 없는 데이터 집합. 데이터의 중복을 허용하지 않는다.
  HashSet, TreeSet 등

Map : 키(key)와 값(value)의 쌍(pair)으로 이루어진 데이터의 집합.
순서는 유지되지 않으며, 키는 중복을 허용하지 않고, 값은 중복을 허용한다.
  HashMap, TreeMap, Hashtable, Properties 등

Collection 인터페이스의 메서드 
 - boolean add(Object o) / boolean addAll(Collection c) : 추가 
 - void clear() : Collection의 모든 객체를 삭제 
 - boolean contains(Object o) / boolean containsAll(Collection c) : 지정된 객체(o) 또는 Collection의 객체들이 Collection에 포함되어 있는지 확인한다.
 - boolean isEmpty() : 비여있는지 확인 
 - boolean remove(Object o) / boolean removeAll(Collection c) : 삭제 
 - boolean retainAll(Collection c) : 지정된 Collection에 포함된 객체만을 남기고 다른 객체들은 Collection에서 삭제한다. 
    이 작업으로 변화가 있으면 true 없으면 false를 리턴한다. 
 - int size() : Collection에 저장된 객체의 수를 반환한다.

List 인터페이스 - 순서 O, 중복 O
 List - Vector(동기화O) - Stack
        - ArrayList** (동기화X): 벡터를 개선한것 
        - LinkedList**
 List 인터페이스 메서드 
 - void add(int index, Object o) / boolean addAll(int index, Collection c) : 지정된 위치에 추가 
 - Object get(int index) : 지정된 위치(index)에 있는 객체를 반환한다.
 - Object set(int index, Object o) : 지정된 위치의 객체를 변경 
 - int indexOf(Object 0 ) : 지정된 객체의 인덱스 찾기 (앞에서 부터 찾기)
 - int lastIndexOf(Object 0 ) : 지정된 객체의 인덱스 찾기 (뒤에서 부터 찾기)
 - Object remove(int index) : 지정된 위치의 객체삭제, 삭제된 객체 반환
 - void sort(Comparator c) : 정렬 

List list = new ArrayList<String>();
list.add("a");
list.add("b");
list.set(0, "d");
list.add(0, "f");
list.add(0, "z");
list.add(0, "h");

// 내림차순 정렬
list.sort(Comparator.reverseOrder());

// 오름차순 정렬 
list.sort(Comparator.naturalOrder());

*** 정렬
 1. Comparator 인터페이스 구현 

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

class Student{
    String name;
    int math;
    int science;

    Student(String name, int math, int science){
        this.name = name;
        this.math = math;
        this.science = science;
    }
}

public class CollectionMain {
    public static void main(String [] args){
    
        List<Student> studentList = new ArrayList<Student>();
        studentList.add(new Student("A", 20, 30));
        studentList.add(new Student("B", 40, 50));
        studentList.add(new Student("C", 30, 30));

        Collections.sort(studentList, new Comparator<Student>() {
            @Override
            // o1 앞에거 o2 뒤에꺼
            // 리턴 음수 : 바꾸기
            // 리턴 양수 : 그대로
            public int compare(Student o1, Student o2) {
            	// 큰 것이 위로
                if(o1.science < o2.science)
                    return 1;
                else if(o1.science > o2.science)
                    return -1;
                else{
                	// 과학 점수가 같으면 수학점수 확인
                    if(o1.math < o2.math){
                        return 1;
                    }else{
                        return -1;
                    }
                }
            }
        });

        for (Student tmp : studentList
             ) {
            System.out.println(tmp.name);
        }
    }

}

수행결과 



2. Comparable 인터페이스 구현

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

class Student2 implements Comparable<Student2>{
    String name;
    int math;
    int science;

    Student2(String name, int math, int science){
        this.name = name;
        this.math = math;
        this.science = science;
    }

    @Override
    public int compareTo(Student2 o) {

        if(this.science < o.science)
            return 1;
        else if(this.science > o.science)
            return -1;
        else{
            if(this.math < o.math){
                return 1;
            }else{
                return -1;
            }
        }
    }
    

public class CollectionMain {
    public static void main(String [] args){

        List<Student2> studentList2 = new ArrayList<Student2>();
        studentList2.add(new Student2("A", 20, 30));
        studentList2.add(new Student2("B", 40, 50));
        studentList2.add(new Student2("C", 30, 30));

        Collections.sort(studentList2);

        for (Student2 tmp : studentList2
        ) {
            System.out.println(tmp.name);
        }


    }

}

}


 - List subList(int fromIndex, int toIndex) : 지정된 범위로부터 객체 반환 

 

Set 인터페이스 - 순서 X, 중복 X
 Set - HashSet**
        - SortedSet - TreeSet**

Set 인터페이스 메소드 = Collection인터페이스 메소드와 동일 
집합과 관련된 메소드 : 변화가 있으면 true 아니면 false 리턴 
 - boolean addAll(Collection c) : 합집합. 객체들을 추가한다.
 - boolean containsAll(Collection c) : 부분 집합. 객체들이 포함되어 있는지 확인.
 - boolean removeAll(Collection c) : 차집합. 지정된 Collection에 포함된 객체들을 삭제한다.
 - boolean retainAll(Collection c) : 교집합. 지정된 Collection에 포함된 객체만 남긴다.

Map 인터페이스 - 순서 X, 중복(키 X, 값 O)
  Map - HashTable
           - HashMap**(HashTable의 최신버전) - LinkedHashMap 
           - SortedMap - TreeMap **

Map 인터페이스 메소드
 - Object put(Object key, Object value) : 맵에 추가 
 - void putAll(Map m) : 추가
 - Object remove(Object key) : 키 같은것을 삭제 
 - boolean containsKey(Object key) : 키가 같은 것을 확인
 - boolean containsValue(Obejct value) : 값이 같은 것을 확인
 - Object get(Object key) : 키 같은것 찾아서 반환 
 - Set entrySet() : Map에 저장되어 있는 key-value쌍을 Map.Entry타입의 객체로 저장한 Set반환
 - Set keySet() : 모든 Key 객체를 반환
 - Collection values() : 모든 value 객체를 반환

반응형

'개발' 카테고리의 다른 글

Java - LinkedList  (0) 2021.06.06
Java - ArrayList  (0) 2021.06.06
Java - 형식화 클래스  (0) 2021.06.06
Java - 날짜와 시간  (0) 2021.06.06
Java - 래퍼클래스(wrapper)  (0) 2021.06.06