ArrayList
- 기존의 vector를 개선한 것으로 구현원리와 기능적으로 동일
- vector는 자체적으로 동기화 처리가 되어 있다
- List인터페이스를 구현하므로, 저장순서가 유지되고 중복을 허용한다.
- 테이터의 저장공간으로 배열을 사용한다.(배열기반)
ArrayList의 메서드
ArrayList() 기본 생성자
ArrayList(Collection c) 매개변수로 어떠한 컬렉션을 주면 컬렉션을 저장하는 ArrayList
ArrayList(int initialCapacity) 배열의 길이
예제
package sec02.exam01_arraylist;
import java.util.ArrayList;
import java.util.List;
public class ArrayListExample {
public static void main(String[] args) {
//List컬렉션 ? 특징 - 인덱스관리, 중복허용
//1)ArrayList클래스
List<String> list = new ArrayList<String>();
// 데이터 저장하기
list.add("Java"); // 인덱스 0번 저장
list.add("JDBC"); // 인덱스 1번 저장
list.add("Servlet/JSP"); // 인덱스 2번 저장 -> 3번
list.add(2, "DataBase"); // 인덱스 2에 삽입.
list.add("MyBatis"); // 인덱스 4번 저장
//중복허용
//list.add("MyBatis");
int size = list.size();
System.out.println("총 객체수: " + size); // 5
System.out.println();
//데이터 읽어오기
String skill = list.get(2);
System.out.println("인덱스 번 2: " + skill); // DataBase
System.out.println();
//컬렉션의 모든 정보를 읽어오기. i는 0~4
for(int i=0; i<list.size(); i++) {
String str = list.get(i);
System.out.println(i + ": " + str);
}
System.out.println();
//컬렉션 요소(개별기억장소) 인덱스 제거
list.remove(2); // 실제 3번째 데이타위치 제거
list.remove(2);
//컬렉션 요소를 값으로 제거
list.remove("MyBatis");
//컬렉션의 모든 정보를 읽어오기. i는 0~1
for(int i=0; i<list.size(); i++) {
String str = list.get(i);
System.out.println(i + ": " + str);
}
}
}
package sec02.exam01_arraylist;
import java.util.Arrays;
import java.util.List;
public class ArraysAsListExample {
public static void main(String[] args) {
// Arrays 클래스 : 배열기능을 지원하는 목적으로 제공.
List<String> list1 = Arrays.asList("홍길동", "신용관", "감자바");
//향상된 for문. 배열 또는 컬렉션 사용가능
for(String name : list1) {
System.out.println(name);
}
List<Integer> list2 = Arrays.asList(1, 2, 3);
for(int value : list2) {
System.out.println(value);
}
}
}
package sec02.exam03_linkedlist;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
// 데이타 삽입, 삭제시 ArrayList보다 LinkedList가 더 성능이 좋다.
// 순차적으로 추가/삭제 : ArrayList > LinkedList
// 중간에 추가/삭제 : ArrayList < LinkedList
// 검색 : ArrayList > LinkedList
public class LinkedListExample {
public static void main(String[] args) {
List<String> list1 = new ArrayList<String>();
List<String> list2 = new LinkedList<String>();
long startTime;
long endTime;
//ArrayList클래스 작업
startTime = System.nanoTime();
for(int i=0; i<10000; i++) {
list1.add(0, String.valueOf(i)); // "0" 삽입. 뒤로 밀리는 작업발생.
}
endTime = System.nanoTime();
System.out.println("ArrayList 작업시간: " + (endTime-startTime) + " ns");
//LinkedList클래스 작업
startTime = System.nanoTime();
for(int i=0; i<10000; i++) {
list2.add(0, String.valueOf(i)); // "0" 삽입
}
endTime = System.nanoTime();
System.out.println("LinkedList 작업시간: " + (endTime-startTime) + " ns");
}
}
'JAVA' 카테고리의 다른 글
제네릭 타입 (0) | 2022.09.29 |
---|---|
자료구조 Queue 예제 (1) | 2022.09.29 |
컬렉션 프레임웍(collection framework) (0) | 2022.09.27 |
객체지향 추상 클래스, 추상 메서드 (0) | 2022.09.26 |
객체지향 매개변수의 다형성 예제 (0) | 2022.09.26 |