컬렉션 : 여러 객체를 모아놓음
컬렉션 프레임웍 : 다수의 객체를 다루기 위한 표준화된 프로그래밍
List -> 순서가 있는 데이터의 집합, 중복 가능
Set -> 순서가 없는 데이터의 집합 , 중복 불가 (HashSet, TreeSet)
Map -> 키와 값이 쌍으로 있는 데이터의 집합 , 키는중복x 값은 중복가능 (HashMap , TreeMap )
Vector와 ArrayList
vector와 arraylist의 구현원리는 동일.
vector는 자체적으로 동기화처리를 해 멀티쓰레드에 유리
ArrayList는 자체적으로 동기화처리를 하지 않음
*참조변수의 크기는 4byte ( 64bit jvm은 8byte)
ArrayList의 선언
ArrayList list = new ArrayList(10); //길이가 10인 객체배열
ArrayList의 원소 추가
list.add("java");
list.add("python");
list.add(124); //list.add(new Integer(333)); 원래는 이렇게 wrapper로 해야하지만 오토박싱으로 개선해줌
//컴파일시 자동적으로 코드가 실행됨
list.add(0,"hello");
//인덱스번호를 주면 인덱스 번호자리에 값이 저장됨
ArrayList의 원소인덱스 찾기
System.out.println(list.indexOf("java"));
ArrayList 원소 제거 ( remove의 반환타입은 boolean)
list.remove("java");
ArrayList 원소 값 바꾸기 ( set ( 인덱스 위치 , 바꾸고자하는 값) )
list.set(1,"bool"); //인덱스번호 1위치에 있는 값을 "bool"로 바꾼다..
ArrayList값 출력 (get(인덱스번호))
System.out.println(list.get(2));
ArrayList값 삭제
에러
for (int i=0 ; i<list.size(); i++){
list.remove(i);
}
System.out.println(list); //문제발생 원소가남음
성공
for (int i=list.size()-1 ; i>=0; i--){
list.remove(i);
}
System.out.println(list); //성공 출력[]
**arraylist를 remove로 삭제할때 처음부터 삭제하면 다 삭제가되지않는 이유는
arraylist는 삭제하면 뒷값들을 앞으로 복사하며 땡겨오기때문에 인덱스 0 을 삭제하면
인덱스1에있던값이 0으로간다. 그다음엔 인덱스1번을 삭제하는데 사실 맨 처음에 인덱스2번값을 삭제하는 것 이기 때문에 몇가지 원소들이 남게된다.
Vector의 사용
vector의 크기 = 값이 저장된 크기
vector의 용량 = 배열의 길이
Vector v = new Vector(5);
v.add("1");
v.add("2");
v의 크기는 3 용량은 5
Vector의 공간 없애기
v.trimToSize(); //빈 공간을 없애 용량과 크기가 같아짐
Vector의 용량 늘리기
v.ensureCapacity(6); //용량을 6으로 늘림
Vector의 크기 늘리기
v.setSize(10); //크기를 10으로함
용량이 6인데 크기를 10으로했기때문에 자동적으로 새로운 객체가 생성되고 용량이 두배 늘어남..
Vector 초기화
v.clear();
그대로 용량은 2배늘어난 12임.
'IT 관련 > JAVA' 카테고리의 다른 글
자바 스택과 큐 (0) | 2022.08.09 |
---|---|
자바 ArrayList 와 LinkedList (0) | 2022.08.09 |
자바 형식화 , 포멧팅(formatting) (0) | 2022.08.03 |
자바(java) 날짜(Date,Calendar,time) (0) | 2022.08.03 |
자바 java.lang 패키지(2) (0) | 2022.07.26 |