[JAVA] 자바 - 컬렉션(Collection) 개념과 List 인터페이스
by mini_min[JAVA]
자바 - 컬렉션(Collection) - List
✔️ 컬렉션이란?
컬렉션은 다수의 데이터를 의미한다.
컬렉션 프레임워크는 다수의 데이터를 쉽고 효율적으로 처리할 수 있도록 표준화된 방법을 제공하는 클래스의 집합인데, 데이터를 저장하는 구조와 알고리즘을 구조화하여 클래스로 구현한 것이다.
🏷️ 컬렉션 프레임워크 구성 요소?
- 인터페이스 : 컬렉션에 필요한 데이터 관리 기능을 제공!
- 구현 클래스 : 컬렉션 인터페이스를 구현한 클래스다!
- 알고리즘 : 각 컬렉션마다 유용하게 사용할 수 있는 메소드.
◾ 주요 컬렉션 인터페이스 계층도
◾ 주요 컬렉션 인터페이스
◾ 주요 컬렉션 인터페이스의 구현 클래스
List<E>
중복 허용, 순서가 있고 요소의 삽입 위치 제어가능
구현 클래스는 ArrayList , LinkedList, Vector, Stack
Set<E>
순서를 유지하지 않는 데이터 집합
중복 허용 안함 xxx
HashSet Treeset 등
Map<K,V>
키와 값을 쌍으로 저장하는 집합
저장 순서가 유지되지는 않고,
키는 중복 x 키가 주소, 주민번호 같은것
값은 중복 가능함
HashMap, Hashtable, Properties 등
✔️ List 인터페이스
◾ List 인터페이스 란?
'순서'가 있는 컬렉션으로, 배열과 달리 데이터 삽입 위치를 제어할 수 있다.
요소(데이터) 들은 인덱스로 관리하고 인덱스로 요소를 검색하거나 삭제할 수 있는데, 특별한 점은 동일한 요소를 중복해서 저장할 수 있다는 점!
⭕ null 도 저장이 가능하지만, 해당 인덱스는 객체를 참조하지 않는다.
⭕ 주요 구현 클래스 : ArrayList, LinkedList, Vector, Stack
💡 중복 저장이 가능한 List 컬렉션
중복 저장이 가능하기 때문에, 중복 저장이 안되는 배열을 보완해서 사용하기도 한다!
◾ 문법 ⭐⭐
List<String> list = new ArrayList<>();
◾ List<E> 인터페이스 주요 메소드
✔️ ArrayList 클래스
List 인터페이스를 구현하는 주요 클래스 중 하나!!!
- 크기 변경이 가능한 배열을 구현하고 초기 용량은 10. 내부적으로 사용되는 배열의 크기를 조작하는 메소드를 제공한다` (이후 메모리가 부족해지면 10씩 자동으로 용량이 늘어남)
- 임시 배열로 자료를 복사하는 방법을 사용
- 대량의 자료가 추가되면 성능이 떨어질 수 있다.
- 멀티 쓰레드 환경에서 동기화 되지 않는다!
◾ ArrayList 클래스의 생성자 및 메소드
◾ ArrayList 데이터 추가
public static void main(String[] args) {
List<String> list = new ArrayList<>(); // up-casting 리스트가 아버지
//List(상위 인터페이스) - ArrayList(인터페이스 구현한 클래스)
//마지막에 요소 추가
list.add("서울");
list.add("부산");
list.add("대구");
list.add("인천");
list.add("서울");//중복 요소 추가 가능
list.add("대전");
//4인덱스에 데이터 추가
list.add(4, "광주");
System.out.println("개수 : " + list.size());
◾ ArrayList 지정된 위치 요소 리턴
s = list.get(0);
s = list.get(1);
//마지막 데이터 추출
s = list.get(list.size()-1);
//값 변경
list.set(0, "대한민국");
//특정 문자열 몇 번째?
int idx;
idx = list.indexOf("인천");
idx = list.indexOf("세종");
//문자열 존재 유/무
boolean b = list.contains("부산");
//문자열 삭제
list.remove("서울");
◾ ArrayList 전체 출력
for(int i=0; i<list.size(); i++){
s = list.get(i);
System.out.print(s + " ");
}
for(String str : list){
System.out.print(str + " ");
}
◾ ArrayList 전체 출력-Iterator 사용
Iterator<String> it = list.iterator();
while(it.hasnext()) {
String str = it.next();
System.out.print(str + " ");
}
//역순 출력 (1)
for(int i=1; i<list.size(); i++){
s = list.get(list.size()-i); //점점 0으로 가는것
System.out.print(s + " ");
}
//역순 출력(2)
// ListIterator : 순방향과 역방향 모두 가능
//ListIterator<String> it2 = list.listIterator(); //순방향으로 검색
ListIterator<String> it2 = list.listIterator(list.size()); //반복자를 가장 뒤로 보냄
while(it2.hasPrevious()) {
String str = it2.previous();
System.out.print(str + " ");
}
💡 ListIterator 사용할 때는 hasPrevious() 사용한다.
'Java' 카테고리의 다른 글
[JAVA] 자바 - 제네릭 클래스/인터페이스 & 제네릭 배열 (generics) (0) | 2022.07.28 |
---|---|
[JAVA] 자바 - ArrayList (배열을 리스트로 변환/리스트를 배열로 변환) (0) | 2022.07.28 |
[JAVA] 자바 - 예외 처리(Exception) & 예외 넘기기(throws) ⭐⭐ (0) | 2022.07.27 |
[JAVA] 자바 - static 중첩 클래스 & 내부 클래스(member class) (0) | 2022.07.27 |
[JAVA] 자바 - 익명 구현(anonymous) (인터페이스 익명 구현) (0) | 2022.07.27 |
블로그의 정보
개발자 미니민의 개발로그
mini_min