[JAVA] 컬렉션 프레임워크

XXXX·2024년 1월 10일
0
post-thumbnail

컬렉션 프레임워크

  • 여러 데이터를 편리하게 관리할 수 있게 만들어 놓은 것
    : 자료 구조 및 알고리즘을 구조화

대표 인터페이스

  • List 인터페이스, Set 인터페이스, Map 인터페이스


List 인터페이스

  • 순서가 있는 데이터의 집합
  • 데이터 중복 허용
  • 대표 구현 클래스
    : ArrayList, LinkedList, Vector


Set 인터페이스

  • 순서가 없는 데이터의 집합
  • 데이터의 중복 허용 하지 않음
  • 대표 구현 클래스
    : HashSet, TreeSet


Map 인터페이스

  • 키와 값의 쌍으로 이루어진 데이터 집합
  • 순서를 유지 하지 않음
  • 대표 구현 클래스
    : HashMap, TreeMap



// Java 프로그래밍 - 컬렉션 프레임워크

import java.util.*;

public class Main {

    public static void main(String[] args) {

//      1. List
//        1-1. ArrayList
        ArrayList list1 = new ArrayList();
        list1.add(1);
        list1.add(2);
        list1.add(3);
        System.out.println("list1 = " + list1);
        list1.remove(Integer.valueOf(2)); // 데이터 '2'를 지운다.
        System.out.println("list1 = " + list1);
        list1.add(0, 10); // 가장 앞의 위치에 데이터 '10' 추가.
        System.out.println("list1 = " + list1);
        System.out.println("list1.size() = " + list1.size()); // list1의 원소 3개, size = 3
        System.out.println("list1.contains(1) = " + list1.contains(1)); // list1에 1이 포함 되어있나?
        System.out.println("list1.indexOf(10) = " + list1.indexOf(10)); // '10'의 인덱스 위치가 어디인가?

//      1-2. LinkedList
        System.out.println("== LinkedList ==");
        LinkedList list2 = new LinkedList();
        list2.add(1);
        list2.add(2);
        list2.add(3);
        System.out.println("list2 = " + list2);
        list2.addFirst(10); // 가장 처음에 데이터 '10' 추가
        list2.addLast(20); // 가장 마지막에 데이터 '20' 추가
        System.out.println("list2 = " + list2);
        list2.remove(Integer.valueOf(1)); // 데이터 '1'을 지움.
        System.out.println("list2 = " + list2);
        list2.removeFirst(); // 가장 처음 자리에 있는 데이터를 지운다.
        list2.removeLast(); // 가장 마지막 자리에 있는 데이터를 지운다.
        System.out.println("list2 = " + list2);
        System.out.println(list2.size());

//      2. Set
//      2-1. HashSet
        System.out.println("== HashSet ==");
        HashSet set1 = new HashSet();
        set1.add(1);
        set1.add(2);
        set1.add(3);
        System.out.println("set1 = " + set1);
        set1.remove(1); // 인덱스로 인식하는 게 아니라 바로 값으로 인식해서 값 '1'이 지워잠.
        System.out.println("set1 = " + set1);
        set1.add(2);
        set1.add(3);
        System.out.println("set1 = " + set1); // set은 중복된 데이터가 들어갈 수 없으므로, 중복처리 해서 원래의 데이터만 그대로 출력
        System.out.println(set1.size());
        System.out.println(set1.contains((2))); // 2가 데이터에 있으므로 true 출력


//      2-2. TreeSet
        System.out.println("== TreeSet ==");
        TreeSet set2 = new TreeSet();
        set2.add(1);
        set2.add(2);
        set2.add(3);
        System.out.println("set2 = " + set2);
        set2.remove(2);
        System.out.println("set2 = " + set2);
        set2.clear(); // 모든 데이터가 다 지워짐.
        System.out.println("set2 = " + set2);
        set2.add(10);
        set2.add(5);
        set2.add(15);
        set2.add(15);
        System.out.println("set2 = " + set2);
        System.out.println(set2.first()); // 가장 처음 값 출력
        System.out.println(set2.last()); // 가장 나중 값 출력
        System.out.println(set2.lower(10)); // tree set에서 10보다 작은 값들을 출력
        System.out.println(set2.higher(10)); // tree set에서 10보다 큰 값들을 출력


//      3. Map
//      3-1. HashMap
        System.out.println("== HashMap ==");
        HashMap map1 = new HashMap();
        map1.put(1, "kiwi"); // key와 데이터 값을 넣어줌.
        map1.put(2, "apple");
        map1.put(3, "mango");
        System.out.println("map1 = " + map1);
        
        map1.remove(2);
        System.out.println("map1 = " + map1);
        System.out.println("map1.get(1) = " + map1.get(1));


//      3-2. TreeMap
        System.out.println("== TreeMap ==");
        TreeMap map2 = new TreeMap();
        map2.put(10, "kiwi");
        map2.put(5, "apple");
        map2.put(15, "mango");
        System.out.println("map2 = " + map2);

        System.out.println(map2.firstEntry()); // first의 데이터 값
        System.out.println(map2.firstKey()); // first의 key 값
        System.out.println(map2.lastEntry()); // last의 데이터 값
        System.out.println(map2.lastKey()); // last의 key 값
        System.out.println(map2.lowerEntry(10)); // 10보다 작은 값
        System.out.println(map2.higherEntry(10)); // 10보다 큰 값


    }
}


// Practice
// 로또 번호 만들기

import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedList;

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

        HashSet set = new HashSet();

        for(int i = 0; set.size() < 6; i++) {
            int num = (int)(Math.random() * 45) + 1; // number를 랜덤으로 하나 뽑는다.
            set.add(num); // 랜덤으로 뽑은 데이터가 set에 들어감
        }

        LinkedList list = new LinkedList(set);
        Collections.sort(list); // 정렬해서 출력
        System.out.println("로또 번호: " + list);



    }
}

0개의 댓글