개발자 미니민의 개발스터디

[JAVA] 자바 - 컬렉션(Collection) 개념과 List 인터페이스

by mini_min

[JAVA]
자바 - 컬렉션(Collection) - List

✔️ 컬렉션이란?

컬렉션은 다수의 데이터를 의미한다.

컬렉션 프레임워크는 다수의 데이터를 쉽고 효율적으로 처리할 수 있도록 표준화된 방법을 제공하는 클래스의 집합인데, 데이터를 저장하는 구조와 알고리즘을 구조화하여 클래스로 구현한 것이다.

 

 

🏷️ 컬렉션 프레임워크 구성 요소?

- 인터페이스 : 컬렉션에 필요한 데이터 관리 기능을 제공!

- 구현 클래스 : 컬렉션 인터페이스를 구현한 클래스다!

- 알고리즘 : 각 컬렉션마다 유용하게 사용할 수 있는 메소드.

 

 

◾ 주요 컬렉션 인터페이스 계층도

Collection 인터페이스가 컬렉션 계층 구조의 최상위 인터페이스다.

 

 

◾ 주요 컬렉션 인터페이스

 

 

◾ 주요 컬렉션 인터페이스의 구현 클래스

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() 사용한다.

 

 

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기