-
day25_2 - JAVA (자바, Collection)KIC/JAVA 2021. 7. 19. 18:06반응형
[배열의 단점]
-> 저장할 수 있는 객체 수가 배열을 생성할때 정해야 하는 배열의 문제점
-> 불특정 다수의 객체를 저장하기에 배열은 문제가 있다.
-> 객체를 삭제했을 때 해당 인덱스가 비게 된다.
-> 객체를 저장하려면 어디가 비었는지 확인해야 하는 불편함
[컬렉션 프레임워크]
컬렉션: 사전적 의미로 요소(객체)를 수집해 저장하는 것
-> 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 제공되는 컬렉션 라이브러리
-> java.util 패키지에 포함됨
-> 인터페이스를 통해서 정형화된 다양한 컬렉션 클래스를 이용
[List 컬렉션]
-> 인덱스로 관리한다.
-> 중복으로 객체 저장 가능
[구현 클래스]
->ArrayList
-> Vector
-> LinkedList 등
[List 컬렉션 주요 메서드]
[ArrayList]
-> 초기 용량: 10 (따로 지정 가능)
[Vector]
-> Vector는 스레드 동기화에 주로 사용
-> 복수의 스레드가 동시에 Vector에 접근해 객체를 추가, 삭제하더라도 스레드에 안전
[LinkedList]
Set 컬렉션의 특징 및 주요 메서드
특징
-> 수학의 집합에 비유
-> 저장 순서가 유지되지 않음
-> 객체를 중복 저장 불가
-> 하나의 null만 저장 가능
[HashSet]
[Map]
map 주요 메소드
[컬렉션 ArrayList ex]
package javaPro.java_collection; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class ListEx1 { public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(); list.add(1); list.add(2); list.add(5); list.add(4); list.add(0); list.add(0); System.out.println(list); for(int i = 0; i < list.size(); i++){ System.out.println(i + ":" + list.get(i)); } //list.subLine(1,4) : list 객체의 1번 인덱스부터 3번 인덱스까지 부분 리스트로 리턴 List<Integer> list2 = new ArrayList<Integer>(list.subList(1,4)); System.out.println(list2); //list2를 정렬 //Collections : Collection 프레임워크에 관련된 추가 기능을 멤버로 가진 클래스 Collections.sort(list2);//list2 list 객체를 정렬 System.out.println(list2); } }
[컬렉션 Vector ex]
package javaPro.java_collection; import java.util.List; import java.util.Vector; /* * Vector 예제 : Collection 프레임워크 이전에 사용되던 클래스. * List 의 구현 클래스 * list.addElement(5.0); //Vector의 추가기능 메서드. add 와 같은 기능 */ public class ListEx2 { public static void main(String[] args) { //List list = new Vector(); // <> 생략 가능 List<Double> list = new Vector<Double>(); list.add(0.3); list.add(Math.PI); //list.addElement(5.0); // Vector의 추가기능 메서드 -> add 와 같은 기능 list.add(5.0); for(Object o : list){ System.out.println(o); } System.out.println("1: " + list); double num = 0.5; int index = list.indexOf(num); if(index >=0) System.out.println(num + "의 위치:" + index); else System.out.println(num + "은 List에 없습니다."); num = 0.3; System.out.println(list.indexOf(num)); // 0 System.out.println(list.indexOf(5.0)); // 2 if(list.contains(num)){ // list 의 요소중 0.3인 데이터가 존재하는지 묻는 구문 list.remove(num); // 삭제 System.out.println(num + "삭제됨."); } System.out.println("2: " + list); System.out.println(list.indexOf(num));//-1 System.out.println(list.indexOf(5.0)); //1 System.out.println(list); } }
-> Vector는 ArrayList와 기능은 거의 비슷하고 약간의 메서드 차이가 있다.
-> Vector는 스레드 관련해서 자주 사용하는 메서드이다.
300x250'KIC > JAVA' 카테고리의 다른 글
day27 - JAVA (자바, Collection, Iterator, Map) (0) 2021.07.21 day26 - JAVA (자바, Collection Framework) (0) 2021.07.20 day25_2 - JAVA (자바, Collection) (0) 2021.07.19 day25_1 - JAVA (자바, Generic) (0) 2021.07.19 day24 - JAVA (자바 , SimpleDateFormat, DecimalFormat, parse, Math, Calendar) (0) 2021.07.17