개발/JAVA

[JAVA] 자바 컬렉션 프레임워크(collection framework) - List

윤_ve 2021. 3. 8. 20:52

오늘은 컬렉션 프레임워크에서 List 컬렉션 클래스에 대해 이야기 해보겠다.

 

자바에서 컬렉션 프레임워크는 다수의 데이터를 효과적으로 처리할 수 있는 표준화된 클래스의 집합을 의미한다.

데이터를 저장하는 자료구조와 데이터를 처리하는 알고리즘을 클래스로 만들어 놓은것을 말한다. 그리고 이런 프레임워크는 자바의 interface를 사용하여 구현할 수 있다.

 

몇가지 있지만 가장 많이 사용되고 중요한것 3가지만 알면 크게 문제 없다.

1. List 인터페이스

2. Set 인터페이스

3. Map 인터페이스 

 

이렇게 3가지 인데, 이 중에서 List와 Set 인터페이스는 모두 Collection 인터페이스를 상속받지만, 구조상의 차이로 인해 Map 인터페이스는 별도로 정의된다. 따라서 List 인터페이스와 Set 인터페이스의 공통된 부분을 Collection 인터페이스에서 정의하고 있다.

 

사진 출처 : http://www.tcpschool.com/java/java_collectionFramework_concept

인터넷 찾아보다가 잘 표현한 사진이 있어 가져왔습니다.

 

위의 그림에서<E>, <K,V> 처럼 모든 클래스가 제네릭으로 구현되어있다는 것을 알 수 있다.

 

이중 오늘 포스팅의 내용은 List에 관한 것으로 List<E>는 순서가 있는 데이터의 집합으로 중복을 허용하는데, 이는 순서가 있기 때문에 중복을 허용해도 그 순서만 알면 되기 때문이다.

 

다음 글에 적을 Set<E>클래스는 중복을 허용하지 않는데 그 이유가 바로 Set<E>가 순서가 없는 데이터의 집합이기 때문이다.

 

이 부분은 다음에 또 언급하기로 하고 직접 코딩을 해보면서 사용방법을 보겠다.


만드는 방법은 제네릭을 사용해서 만들어 주면된다.

(다음에 제네릭에 관해서도 포스팅 할 예정!)

 

util.ArrayList를 import 해주고

List<type> 참조변수 = new ArrayList<type>();

형태로 만들어 주면 된다.

 

기능을 3가지로 구분하자면 객체 추가, 검색, 삭제 이 세가지의 기능을 메서드로 구현 할 수있다.

 

우선 추가에는 list.add("넣고싶은 문자열");

void add를 사용하는데 위에 제네릭으로 String타입을 받겠다고 클래스 객체를 선언했기 때문에 사진에서는 문자열 만 넣는 것을 볼 수 있다.

 

list.add(2, "Database")처럼 해당 문자열을 넣고 싶은 위치를 직접 지정해서 넣어줄 수 도 있다.

이렇게 만들어 놓은 리스트를 for문으로 출력해보면,

 

이렇게 인덱스 순서대로 들어갈 수 있는것을 볼 수 있다. 그리고 Database가 Servlet/JSP를 밀어내고 인덱스 2번 자리에 있는것을 확인 할 수 있다.

add를 사용안하고 set(index number, E element)를 통해 값을 넣어 줄 수도 있다.


다음은 검색 기능이다.

 

검색기능은 우선 list에 들어간 값의 갯수를 알 수있는 size()메서드가 있다.

 

그리고 get(index number)를 통해 해당 인덱스 번호에 들어간 값을 검색할 수도 있다.

(따로 입력은 안했지만, 해당 리스트에 값이 들어있는지 없는지 확인하는 isEmpty()메서드도 있다.)

 

위 코드를 출력하면,

이렇게 list의 갯수와 인덱스 위치에 해당하는 값을 불러오는 것을 볼 수 있다.

 


다음은 객체의 삭제의 설명이다.

 

삭제는 간단하게 remove()메서드를 활용하면 된다.

 

이렇게 remove를 이용해서 인덱스의 위치를 넣어주거나, 삭제하고 싶은 값을 직접 넣어주면 삭제가 된다.

 

위의 코드를 실행하면 이런 결과를 얻을 수 있다.

 

void clear()메서드도 있는데 이름 그대로 아예 싹 지워주는 메서드이다.

필요한것을 골라서 잘 사용 하면 되겠다.

 

다음 글에선 Set과 Map에 관해서 말해보겠다.