-
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