Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
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
Tags more
Archives
Today
Total
관리 메뉴

Formoat's Open Blog

컬렉션 - List 본문

Java/Java Basic

컬렉션 - List

snd-snd 2019. 9. 4. 00:03
인터페이스 구현 클래스 특징
List ArrayList, Vector, LinkedList 순서 유지, 인덱스로 관리, 중복해서 객체 저장 가능

 

1. ArrayList

인덱스를 이용해 요소들을 관리한다는 점은 배열과 유사하다. 하지만 배열과 달리 저장 공간이 부족할 경우 자동으로

크기가 늘어난다는 점이 다르다. 용량을 특정하지 않을경우 기본값은 10이다. 요소들은 0번 인덱스부터 차례로 저장이 되고,

특정 인덱스의 요소를 제거할 경우 해당 인덱스의 바로 뒷부분에 저장된 요소부터 한칸씩 앞으로 이동한다. 반대로

특정 인덱스에 요소를 추가하는 것도 가능하다. 이도 마찬가지로 인덱스 요소부분부터 한칸씩 뒤로 이동한다. 이 때문에

많은 데이터를 특정 인덱스에 추가/삭제할 경우 ArrayList가 아닌 LinkedList를 사용하는게 더욱 효율적 이다.

2. Vector

Vector는 ArrayList와 동일한 구조로 이루어져 있다. 차이점은 메소드가 synchronized로 이루어져 있기 때문에

멀티 스레드 환경에서 동기화 작업을 통해 안전하게 사용 할 수 있다.

3. LinkedList

인덱스를 통해 요소를 관리하지 않고, 요소의 head와 tail의 주소값을 참조하여 체인처럼 연결시켜 관리한다.

요소의 추가/삭제를 할 경우 추가/삭제된 곳의 앞 뒤 링크만 변경 하고 나머지 링크값은 그대로 유지된다.

4. Arrays.asList

고정된 List를 생성할 때 사용되며 Arrays 클래스에서 제공하는 asList(T t ... ) 메소드를 이용해 List 객체 생성시

asList 메소드에 대입한 매개값으로 이루어진 요소들만을 가진 List 객체를 생성하게 되며 이후 이 List 에는 요소를 추가/삭제 할 수 없다.

 

 

Function Return Type Method Remarks
추가 boolean add(E e) 해당 리스트에 전달된 요소를 추가
void add(int index, E e) 해당 리스트의 특정 위치에 전달된 요소를 추가
E set(int index, E e) 해당 리스트의 특정 위치에 존재하는 요소를 전달된 요소로 대체
검색 boolean contains(Object o) 해당 리스트가 전달된 요소를 포함하고 있는지 확인
E get(int index) 해당 리스트의 특정 위치에 존재하는 요소를 반환
boolean isEmpty() 해당 리스트가 비어있는지 확인
int size() 해당 리스트 요소의 총 개수를 반환
boolean equals(Object o) 해당 리스트와 전달된 객체가 같은지 확인
제거 void clear() 해당 리스트의 모든 요소를 제거
boolean remove(int index) 해당 리스트의 특정 위치에 존재하는 요소를 제거
boolean remove(Object o) 해당 리스트에서 전달된 객체를 제거
기타 Iterator<E> iterator() 해당 리스트의 반복자를 반환
Object[] toArray() 해당 리스트의 모든 요소를 Object타입의 배열로 반환

<표> List 컬렉션의 주요 메소드

 

 

 

 

ListExample.java

public class ListExample {

	public static void main(String[] args) {
		
		List<String> list = new ArrayList<>();
		
		list.add("김태호"); // 리스트에 요소추가
		list.add("홍길동"); // 리스트에 요소추가
		list.add("박상철"); // 리스트에 요소추가
		list.add(0, "감성우"); // 리스트에 0번 인덱스에 요소 추가
		
		list.remove(3); // 리스트의 3번 인덱스의 요소 제거
		list.remove("김태호"); // 리스트의 "김태호"라는 요소 제거
		
		for (String str : list)
			System.out.println(str);	
	}
}

 

// 실행결과 //
----------------------------------------------------
감성우
홍길동

'Java > Java Basic' 카테고리의 다른 글

컬렉션 - Map  (0) 2019.09.04
컬렉션 - Set  (0) 2019.09.04
컬렉션 프레임워크 (Collection Framework)  (0) 2019.09.03
함수적 인터페이스 - Predicate  (0) 2019.09.03
함수적 인터페이스 - Operator  (0) 2019.09.03
Comments