Java/Java

Java 컬렉션 프레임워크_List_ArrayList (Collection framework)

검은고양이개발자 2023. 1. 14. 12:20
반응형

컬렉션 프레임워크 뭘까요?


컬레션 프레임워크는 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미합니다.

 

이러한 컬렉션 프레임 워크에는 

List와 Set 인터페이스를 상속하는 Collection 인터페이스와 (key,value)의 값을 가지는 Map 인터페이스가 존재하는데

이 중 먼저 Collection의 상속을 받는 List에 대해서 알아보겠습니다.

 

Collection 은 위에서 말한 것처럼 List와 Set을 상속하는 인터페이스인데요

순서가 있거나, 집합적인 저장공간을 나타내는 특징이 있으며 이 각각의 특징은 나뉘어

List -> 순서가 있는 저장 공간  Set -> 집합적인 저장 공간 으로 나뉘게 됩니다.

 

List는 데이터의 순서가 유지가 되며, 중복 저장이 가능합니다!   

 

//Set,Map과 비교를 해보면

List : 데이터 순서 유지 o / 중복 저장 o

Set: 데이터 순서 유지 x / 중복 저장 x

Map: 데이터 순서 유지 x / 키는 중복 저장x  , 값은 중복 저장 o //

 

List 인터페이스는 배열과 같은 구조를 가지고 있으며, 객체를 인덱스로 관리하기 때문에 

인덱스로 객체를 삭제, 추가, 검색할 수 있는 등 여러 기능을 제공합니다.

ex) add( int index, Object element) 주어진 인덱스에 객체를 추가

      get(int index) 주어진 인덱스에 저장된 객체를 반환

 

이러한 List 인터페이스를 구현한 클래스로는 ArrayList, Vector , LinkedList, Stack 등이 있는데

이 중 ArrayList를 알아볼게요

 

ArrayList는 List 인터페이스를 구현한 클래스이며, 컬렉션 프레임워크에서 가장 많이 사용되는 클래스입니다.

ArrayList는 배열과 비슷한데 배열은 생성될 때 크기가 고정되는 반면, ArrayList는 배열의 크기보다 초과하여 객체를 추가하게 되면 자동으로 배열의 크기가 커지게 됩니다. 또한 데이터가 연속적으로 존재하기에 데이터의 순서또한 유지 됩니다!

 

 

ArrayList<T> list = new ArrayList<T>(20);

 

위의 코드는 ArrayList를 생성하는 코드인데요

 

저장할 객체 타입을 <T> 제네릭으로 표기하는 특징이 있습니다. 

또한 뒤에 (숫자)를 적게되면 List 의 크기를 정할 수 있고, 아무 숫자도 쓰지 않으면 List의 크기는 10이 됩니다.

 

public class List {
    public static void main(String[] args) {
        boolean babo=false;
        ArrayList<Boolean> list = new ArrayList<>(20);
        list.add(true);
        list.add(babo);
        list.add(false);

        for(int i=1; i<=17 ; i++){
            int num= (int)(Math.random()*2+1);
            if(num==1) list.add(true);
            else list.add(false);
        }
        for(boolean bool : list) {

            System.out.println(String.valueOf(bool));
        }
    }
}1
//호출
true false false false true true true false true false true ->
true false true false false false true true false

다음은 ArrayList에 boolean 객체를 추가하는 예제입니다.

 

// bool 을 System.out.println(String.valueOf(bool)) 

list.add -> 객체 추가

 

17개의 요소를 true, false  랜덤으로 넣었다.

반응형