기초

[Java]Array와 List

  • -
반응형

Array와 List

Array(배열)와 List(리스트)는 자료구조의 개념으로서 데이터의 관리 또는 적재(추가 또는 수정)에 있어 서로 차이가 있다.


배열

  • 배열은 인덱스를 이용해 원하는 요소을 찾는 특징이 있다. 때문에 인덱스는 고정값이어야 한다. 
  • 배열은 정적으로 선언되어 사용된다.
  • 배열 초기화시 메모리에 할당되어 속도가 빠르다.


리스트

  • 리스트는 동적인 관리가 가능하다.
  • 요소를 추가 또는 수정할 때마다 메모리 재할당이 일어나기 때문에 속도가 느린 단점이 있다.


아래 그림에서 인덱스 0과 1 사이에 'B'라는 요소를 추가하려고 한다.

데이터를 알파벳 순서에 따라 A, B, C, D로 추가하려는 의도이다.



리스트를 이용하면 매우 쉽게 요소를 추가할 수 있다.

간단한 예제 코드를 하나 만들어 보았다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class ListTest{
 
    public static void main(String args[]) {                                                
        System.out.println("LIST START !");
        List list = new ArrayList();
        list.add("A");        
        list.add("C");
        list.add("D");
        
        for(int i=0; i<list.size(); i++){            
            System.out.println("index : " + i + " > " + list.get(i));
        }
        
        System.out.println("LIST ADD B");
        list.add(1,"B");
        for(int i=0; i<list.size(); i++){            
            System.out.println("index : " + i + " > " + list.get(i));
        }
    }
}
cs


리스트 인터페이스 중 하나인 ArrayList 클래스를 인스턴스화 하여 list를 만들었다.

add() 메소드는 ArrayList에 원하는 인덱스에 지정값을 저장해준다.

인덱스를 설정하지 않을 경우에는 순서대로 입력된다. ☞ list.add("A"); 

12번 라인까지 결과를 봤을 때 리스트에는 A, C, D가 저장되어 있다.



이제 15번 라인에서 1번 인덱스에 B를 저장해보았다. ☞ list.add(1,"B");

그 결과, 리스트에는 A, B, C, D가 저장되었다.




이것이 리스트 방식이다. 기존의 인덱스가 증가하면서 각 요소들은 뒤로 한칸씩 밀려 자동으로 할당되었다.

배열의 경우를 알아보자.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class ListTest{
 
    public static void main(String args[]) {                                                
        System.out.println("ARRAY START !");
        String[] arr = new String[3]; 
        arr[0= "A";
        arr[1= "C";
        arr[2= "D";
        
        for(int i=0; i<arr.length; i++){            
            System.out.println("index : " + i + " > " + arr[i]);
        }
        
        System.out.println("ARRAY ADD B");
        arr[1= "B";
        for(int i=0; i<arr.length; i++){            
            System.out.println("index : " + i + " > " + arr[i]);
        }
    }
}
cs


String 배열을 생성하여 A, C, D 요소를 추가했다.

12번 라인까지 결과를 봤을 때 리스트와 결과가 동일하다.



이제 15번 라인에서 1번 인덱스에 B를 추가했다. ☞ arr[1= "B";

결과는 아래 그림과 같이 기존의 1번 인덱스에 B가 저장되었다.




배열은 크기가 고정적이기 때문에 새 요소를 추가하기 위해서는 배열의 크기를 증가시켜주거나 동적 배열(Dynamic Array)를 사용해야 한다. 




+ 피드백은 언제나 환영입니다 :)

반응형

'기초' 카테고리의 다른 글

[Java]Iterator  (2) 2018.08.28
[Java]ArrayList와 LinkedList(+Vector)  (0) 2018.08.24
자바와 자바스크립트의 차이  (0) 2018.08.22
[Java]int와 Integer의 차이  (0) 2018.08.22
[Java]JVM 메모리 구조  (0) 2018.08.12
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.