다시 써보며 정리
객체 추가 : add(int index, E element), 특정 위치에 객체(컬렉션) 삽입
객체 설정 : set(int index, E element), 특정 위치에 객체 저장
객체 검색 : get(int index), indexOf(E e), lastIndexOf(E e)
반복 탐색 : listIterator(), subList(int from, int to)
정렬 : sort(Comparator c) : 비교자를 기준으로 정렬
ArrayList : 배열 기반으로 인덱스를 통한 빠른 검색
- 크기 초과시 자동으로 크기를 늘려줌
- 중간삽입/삭제는 느릴 수 있음
package 연습문제;
import java.util.ArrayList;
public class List {
public static void main(String[] args) {
// TODO Auto-generated method stub
// List<E>
// 대표 구현 클래스 : ArrayList, LinkedList, Vector, Stack
ArrayList<String> list1 = new ArrayList<>();
ArrayList<String> list2 = new ArrayList<>(30); // 초기용량
ArrayList<String> list = new ArrayList<>();
list.add("Java");
list.add("egg");
list.add("tree");
System.out.println(list.get(0)); // get() 안에 무조건 숫자가 들어가야한다 int index
System.out.println(list.size());
list.remove(0); // int index
System.out.println(list);
for(String str : list) {
System.out.println(str);
}
// 위의 향상된 for문을 풀어써보기
for(int i = 0; i < list.size(); i++) {
String str = list.get(i);
System.out.println(str);
}
}
}
LinkedList : 중간삽입/삭제가 빈번한 곳에 적합
- 연결 리스트 자료구조 기반
- 삽입/삭제가 빠르고 검색이 느림
- 각 요소가 이전/다음 요소의 참조 주소를 저장하고 있음
public static void main(String[] args) {
// TODO Auto-generated method stub
// List<E>
LinkedList<String> list = new LinkedList<>();
list.add("Java");
list.add("egg");
list.add("frog");
System.out.println(list.get(0));
list.remove(0);
System.out.println(list);
list.set(0,"egg2");
System.out.println(list);
for(String str : list) {
System.out.println(str);
}
for(int i = 0; i<list.size(); i++) {
String str = list.get(i);
System.out.println(str);
}
}
예제
public static void main(String[] args) {
// TODO Auto-generated method stub
// List<E>
List<String> fruits = new ArrayList<>();
fruits.add("Apple");
fruits.add("Grape");
fruits.add("Banana");
System.out.println(fruits.contains("Apple"));
System.out.println(fruits.contains("Orange"));
System.out.println(fruits.size());
fruits.remove("Banana");
for(String fruit : fruits) {
System.out.println(fruit);
}
}
'JAVA' 카테고리의 다른 글
| 객체 직렬화 / 역직렬화 (1) | 2025.06.10 |
|---|---|
| Stram API의 map과 flatMap의 차이점 (0) | 2025.06.08 |
| 단일 책임 원칙(SRP)과 개방-폐쇄 원칙(OCP) (0) | 2025.06.05 |
| 컬렉션 프레임워크 - 2 (0) | 2025.06.04 |
| 컬렉션 프레임워크 - 1 (0) | 2025.06.04 |