ListJava2022. 12. 10. 17:15
Table of Contents
728x90
728x90
대표적인 클래스 종류
- ArrayList<E>
- LinkedList<E>
- Vector<E>
- Stack<E>
ArrayList
가장 많이 사용되는 컬렉션 클래스 중 하나
가변배열이며 JDK 1.2부터 제공됨
배열 공간이 가득차면 새로운 배열을 만들어 기존의 내용을 복사
(복사하는 과정에서 지연이 발생하고, 데이터가 많아질수록 카피에 대한 지연시간 증가)
중간 데이터가 삭제되면 그 앞 인덱스에 있는 데이터들이 한 칸씩 당겨져온다
특정 데이터에 빠르게 접근할 수 있다
데이터의 양이 일관적이고 삽입 및 삭제가 거의 없는경우, 접근속도가 중요할 때 사용한다
(가변배열이지만 거의 변하게 하지 않을 때 사용하는 것이 좋다)
class ExamMain {
public static void main(String[] args) {
// 생성은 가능하나 제네릭타입이기 때문에 경고 발생
// ArrayList list1 = new ArrayList();
ArrayList<Integer> list1 = new ArrayList<Integer>();
list1.add(3);
list1.add(33);
list1.add(333);
list1.add(77);
list1.add(777);
// for문과 get메서드를 이용한 출력
for(int i=0; i<list1.size(); i++) {
System.out.print(list1.get(i)+" ");
}
System.out.println();
// size메서드를 이용한 배열의 크기
System.out.println(list1.size());
// remove메서드를 이용한 요소의 삭제
list1.remove(3);
// Collections.sort메서드를 이용한 정렬
Collections.sort(list1);
// set메서드를 이용한 요소의 변경
list1.set(2, 33333);
// iterator메서드와 get메서드를 이용한 출력
Iterator<Integer> iter = list1.iterator();
while (iter.hasNext()) {
System.out.print(iter.next() + " ");
}
}
}
// Console
3 33 333 77 777
5
3 33 33333 777
LinkedList
ArrayList 클래스가 배열을 이용하여 요소를 저장함으로써 발생하는 단점을 극복하기 위해 고안됨
노드에 의해 데이터들이 연결되어있는 리스트
데이터의 삭제시 연결만 해지된다
데이터 삽입, 삭제가 빠르다
노드를 차례대로 검색하기 때문에 접근속도가 ArrayList에 비해 느리다
데이터의 삽입, 삭제가 자주 일어날 때 / 맨 앞, 맨 뒤 데이터의 삭제가 빈번할 때 사용
ArrayList클래스와 사용할 수 있는 메서드가 거의 같다
728x90
300x250
@mag1c :: 꾸준히 재밌게
2023.04 ~ 백엔드 개발자의 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!