일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- useEffect
- ChatGPT
- HttpSession
- @Controller
- @Query
- post
- firebase
- Thymeleaf
- Login
- useContext
- Polylang
- 구글
- db
- set
- 인텔리제이
- @Repository
- 워드프레스
- SEO
- GA4
- 데이터베이스
- @Entity
- 리액트오류
- JPA
- 구글애널리틱스
- GET
- 구글알고리즘
- router
- pdfmake
- 플러그인
- particial
- Today
- Total
개발천재
[JAVA] List<>와 ArrayList 본문
List<> 이해하기
List는 Java에서 제공하는 *컬렉션(Collection) 중 하나로, 순서가 있는 데이터의 집합을 다루기 위한 인터페이스이다. List는 중복을 허용하며, 각 요소가 순서대로 저장된다. List의 구현체로는 ArrayList, LinkedList 등이 있다.
List<Product> productList = new ArrayList<>();
List<담을타입> 이름 = new ArrayList<>();
*컬렉션(Collection)은 데이터의 집합을 관리하는 Java의 표준 라이브러리이다.
여러 데이터를 하나의 객체로 묶어서 다룰 수 있도록 도와주는 인터페이스와 클래스를 제공하며, 자주 사용하는 컬렉션 클래스에는 List, Set, Map 등이다.
List<>의 주요 특징
순서 유지
List에 저장된 데이터는 입력된 순서대로 저장된다. 즉, 데이터가 어떤 순서로 들어갔는지 알 수 있다.
중복 허용
List는 동일한 데이터를 여러 번 저장할 수 있다. 예를 들어, "apple", "apple", "orange"와 같이 중복된 값을 허용한다.
인덱스 기반 접근
List의 각 요소는 0부터 시작하는 인덱스로 접근할 수 있다. 예를 들어, 첫 번째 요소는 list.get(0)으로 접근할 수 있다.
동적 크기
List의 크기는 고정되어 있지 않고, 필요에 따라 자동으로 확장된다. 데이터를 추가하거나 제거할 때 크기가 변경될 수 있다.
List 주요 메서드
- add(E e): 리스트에 요소를 추가한다.
- get(int index): 지정한 인덱스에 위치한 요소를 반환한다.
- remove(int index): 지정한 인덱스의 요소를 삭제한다.
- size(): 리스트에 저장된 요소의 개수를 반환한다.
- contains(Object o): 리스트에 지정된 요소가 있는지 여부를 반환한다.
- indexOf(Object o): 리스트에서 지정된 요소의 첫 번째 인덱스를 반환한다. 없으면 -1을 반환한다.
- clear(): 리스트의 모든 요소를 제거한다.
import java.util.List;
import java.util.ArrayList;
public class ListExample {
public static void main(String[] args) {
// List 생성 (ArrayList 사용)
List<String> fruits = new ArrayList<>();
// 요소 추가
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
// 인덱스로 요소 접근
System.out.println("첫 번째 과일: " + fruits.get(0)); // Apple
// 리스트의 크기
System.out.println("리스트 크기: " + fruits.size()); // 3
// 리스트에서 요소 삭제
fruits.remove(1); // 인덱스 1에 있는 "Banana" 삭제
System.out.println("리스트 크기: " + fruits.size()); // 2
// 요소가 리스트에 포함되어 있는지 확인
System.out.println("리스트에 'Apple'이 있나요? " + fruits.contains("Apple")); // true
}
}
ArrayList와 LinkedList
List 인터페이스는 다양한 구현체를 가질 수 있다. 대표적으로 두 가지 구현체인 ArrayList와 LinkedList가 있다. 읽기 중심 작업이 많다면 ArrayList를 사용하는 것이 유리하고 삽입/삭제 중심 작업이 많다면 LinkedList가 더 효율적일 수 있다.
ArrayList(위의 예시 코드 참고)
배열을 기반으로 한 동적 리스트이며, 데이터를 배열에 연속적으로 저장하고 인덱스를 생성한다.
중복 데이터를 허용한다.
인덱스를 통해 요소에 빠르게 접근이 가능해서 삽입 삭제가 용이하다.( .size(), indexOf(), add(), set(), remove() 등)
데이터를 저장할 때 가장 많이 사용하는게 ArrayList와 Map이다.
LinkedList
링크드 리스트(연결 리스트) 방식으로 구현된 리스트이다.
요소를 삽입하거나 삭제하는 데는 ArrayList보다 효율적이다.
하지만 요소에 접근할 때는 ArrayList보다 더 많은 시간이 걸린다.
import java.util.LinkedList;
import java.util.List;
public class LinkedListExample {
public static void main(String[] args) {
// LinkedList 생성
List<String> fruits = new LinkedList<>();
// 요소 추가
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
// 인덱스를 사용하여 접근
System.out.println("첫 번째 과일: " + fruits.get(0)); // Apple
System.out.println("두 번째 과일: " + fruits.get(1)); // Banana
// 리스트 크기
System.out.println("리스트 크기: " + fruits.size()); // 3
// 중간에 요소 삽입
fruits.add(1, "Grapes"); // 인덱스 1에 "Grapes" 삽입
System.out.println(fruits); // [Apple, Grapes, Banana, Orange]
// 요소 삭제
fruits.remove(2); // 인덱스 2에 있는 "Banana" 삭제
System.out.println(fruits); // [Apple, Grapes, Orange]
// for-each 사용
System.out.println("리스트의 모든 과일:");
for (String fruit : fruits) {
System.out.println(fruit); // Apple, Grapes, Orange
}
}
}
'개발 준비 > JAVA' 카테고리의 다른 글
[JAVA] stream 이해하기 (2) | 2025.02.24 |
---|---|
[JAVA] Set 제대로 활용하기, 로또 번호 만들기 (1) | 2025.02.21 |
[JAVA] 데이터 관리 도우미 컬렉션(Collection) (1) | 2025.02.20 |
[JAVA] Optional 개념과 주요 메서드 (2) | 2025.02.12 |
[JAVA] 열거형 클래스 Enum(enumeration type) (0) | 2025.02.11 |