ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 11. 컬렉션 프레임워크
    개발자 수업/Java 2021. 10. 7. 23:44

    1. 컬렉션
        1) 사전적 의미로 요소(객체)를 수집해서 저장하는 것

    2. 배열의 문제점
        1) 저장할 수 있는 객체 수가 배열을 생성할 때 결정(정적)
            => 불특정 다수의 객체를 저장하기에는 문제점이 있음
        2) 객체를 삭제했을 때 해당 인덱스가 비게 됨
            => 듬성듬성 빠진 배열이 됨

    3. 컬렉션 프레임워크(Collection Framework)
        1) 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 제공되는 컬렉션 라이브러리
        2) 라이브러리(기능) + 프로그래밍 방식
        3) 표준화, 정형화된 프로그래밍 방식
        4) 인터페이스를 통해서 정형화된 방법으로 다양한 컬렉션 클래스 이용

    4. 컬렉션 프레임워크의 주요 인터페이스
        1) List : 배열과 유사하게 인덱스로 관리
            - ArrayList, vector, LinkedList, stack, queue ...
        2) Set
        3) Map

    /*
     * ArrayList
     * 	- 특징
     *		1) 데이터 저장 공간을 배열을 사용함 (배열 기반)
     *		2) 동기화 처리가 되어 있지 않음 (싱글 스레드)
     *		3) 객체 제거되면 바로 뒤 인덱스부터 마지막 인덱스까지 모두 앞으로 당겨짐
     */
    
    import java.util.ArrayList;
    
    public class ArrayListTest {
    	public static void main(String[] args) {
    		
    		// 기본적(초기 용량, capacity)으로 10개의 공간을 생성함
    		// 저장 용량을 초과한 객체들이 들어오면 자동적으로 늘어남 (기본적으로 10개가 증가됨)
    		ArrayList list = new ArrayList();
    		
    		System.out.println("총 크기 : " + list.size());
    		list.add("111");
    		list.add("222");
    		list.add("333");
    		list.add("444");
    		System.out.println("총 크기 : " + list.size());
    		
    		list.add(333);		// list.add(new Integer(333))
    		System.out.println("총 크기 : " + list.size());
    		System.out.println("ArrayList에 있는 값 : " + list.toString());
    		
    		// 인덱스 0번째에 "333" 추가하기
    		list.add(0, "333");
    		System.out.println("ArrayList에 있는 값 : " + list.toString());
    		
    		// 앞에서부터 검색하여 "333"을 삭제 (가까운 것 한 개만 선택)
    		list.remove("333");
    		System.out.println("ArrayList에 있는 값 : " + list.toString());
    		
    		// indexOf() : 저장된 객체의 인덕세를 리턴함 없으면 -1 리턴
    		System.out.println("index = " + list.indexOf("333"));
    		System.out.println("index = " + list.indexOf(333));
    		
    		// 객체 전부 삭제하기
    		list.clear();
    		System.out.println("ArrayList에 있는 값 : " + list.toString());
    		
    	}
    }
    import java.util.ArrayList;
    import java.util.Collections;
    
    public class ArrayListTest02 {
    	
    	public static void print(ArrayList<Integer> list1,
    							ArrayList<Integer> list2) {
    		System.out.println("list1 : " + list1.toString());
    		System.out.println("list2 : " + list2.toString());
    	}
    	
    	public static void main(String[] args) {
    		
    		ArrayList<Integer> list1 = new ArrayList<>();
    		list1.add(5);
    		list1.add(4);
    		list1.add(2);
    		list1.add(0);
    		list1.add(1);
    		list1.add(3);
    		
    		ArrayList list2 = new ArrayList(list1.subList(1, 4));
    		print(list1, list2);
    	
    		//정렬하기
    		System.out.println("정렬 후");
    		Collections.sort(list1);		// 기본적으로 오름차순 정렬
    		Collections.sort(list2);
    		print(list1, list2);
    		
    		// 포함관계
    		System.out.println("list1 컬렉션에 list2 컬렉션의 모든 요소가 있는가?");
    		System.out.println(list1.containsAll(list2));
    	}
    }



    5. java.util 패키지에서 제공하는 ArrayList
        1) 객체 배열을 좀 더 효율적으로 관리하기 위해 자바에서 제공해주는 클래스
        2) 최적의 알고리즘으로 구현되어 있는 각 메서드의 사용 방법 익히면 유용하게 사용 가능
        3) 주요 메서드
            - boolean add(E e) : 요소 하나를 배열에 추가함 E는 요소의 자료형을 의미함 
            - int size() : 배열에 추가된 요소 전체 개수를 반환함
            - E get(int index) : 배열의 index 위치에 있는 요소 값을 반환함
            - E remove(int index) : 배열의 index 위치에 있는 요소 값을 제거하고 그 값을 반환함
            - boolean isEmpty() : 배열이 있는지 확인함

    public class BookTest {
    	public static void main(String[] args) {
    		Book[] book = new Book[5];
    		
    		book[0] = new Book("도커에서 어쩌구 저쩌구", "앨튼");
    		book[1] = new Book("단위 테스트", "블라디미르");
    		book[2] = new Book("클라우드 컴퓨텅", " 토마스");
    		book[3] = new Book("자바스크립트","어쩌구");
    		book[4] = new Book("타입스크립트","저쩌구");
    		// 5개 넘어가면 에러나지만 ArrayList는 계속 늘릴 수 있음
    		
    		for(int i=0; i<book.length; i++) {
    			//System.out.println(book[i]);
    			book[i].showInfo();
    		}
    	}
    }
    
    
    
    import java.util.ArrayList;
    
    public class ArrayListTest03 {
    	public static void main(String[] args) {
    		
    		ArrayList<Book> arrBooks = new ArrayList<>();
    		arrBooks.add(new Book("도커에서 어쩌구", "앨튼"));
    		arrBooks.add(new Book("단위 테스트", "블라디미르"));
    		arrBooks.add(new Book("클라우드", "토마스"));
    		arrBooks.add(new Book("자바스크립트", "어쩌구"));
    		arrBooks.add(new Book("타입스크립트", "저쩌구"));
    		
    		for(int i=0; i<arrBooks.size(); i++) {
    			arrBooks.get(i).showInfo();
    		}
    	
    	}
    }

     

    '개발자 수업 > Java' 카테고리의 다른 글

    12. 상속과 오버라이딩  (0) 2021.10.08
    과제1 - TwoDArrayTest03  (0) 2021.10.08
    10. 배열  (0) 2021.10.06
    9. 객체지향프로그램3  (0) 2021.10.06
    8. 객체지향프로그래밍2  (0) 2021.10.05

    댓글