[DataStructure]Array배열/List리스트(ArrayList배열리스트, LinkedList연결리스트)
Coding/Basic

[DataStructure]Array배열/List리스트(ArrayList배열리스트, LinkedList연결리스트)

Array배열 ex) int array[6], String Array[12]

  • 좋은 ) Index가 존재하여 값 조회에 용이
  • 나쁘 ) 개설시 크기를 지정해주어야 하며 변동도 불가능, 하나의 원소를 제거하면 그 제거된 공간은 빈 공간으로 유지되어, 후에 그 공간을 제거하기 위해 뒤에 있는 하나의 원소를 배열 중간에 추가해도 뒤에 내용들을 뒤로 옮기기 위한 까다로운 절차가 필요하다.

List리스트 : 데이터를 일렬로 늘어놓은 자료구조

리스트는 인터페이스이고, 밑으로 ArrayList, LinkedList를 포함하고 있다.

 

  • ArrayList배열리스트
    • 내부에 있는 배열에 데이터를 저장하는 구조
    • Index로 데이터 항목을 찾는 일이 많을 경우 유용
    • 크기가 고정된 Array와 달리 크기가 유동적인 측면에 유용

<<ArrayList 구조>>

ArrayList 함수 모음 : add, set, remove, get, size, IndexOf, LastIndexOf

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
29
30
31
32
33
34
35
import java.util.*;
 
public class ArrayListExample1{
    public static void main(String args[]){
        ArrayList<String> list = new ArrayList<String>;        //배열리스트 생성
        list.add("South Korea");
        list.add("America");
        list.add("Japan");
        list.add("China");            //ArrayList에 원소추가                
                //list = ["South Korea", "America", "Japan", "China"]
        list.add(2,"Spain");        //ArrayList에 인덱스 지정하여 추가하기(사이에 추가하는 방식)    
                //list = ["South Korea", "America", "Spain", "Japan", "China"]
 
        list.set(4,"England");        //지정된 인덱스에 값을 교환
                //list = ["South Korea", "America", "Spain", "Japan", "England", "China"]
        list.remove(3);                //인덱스에 있는 값을 제거
                //list = ["South Korea", "America", "Spain", "China"]
        list.remove("Spain");        //해당 값 내용 지우기
                //list = ["South Korea", "America", "China"]
        
        String a = list.get(0);        //인덱스에 해당하는 값 가져오기                    
                //a = "South Korea"
        int num = list.size();        //해당 리스트 사이즈 가져오기                    
                //num = 3
    
        int index = list.indexOf("China");        //해당 값이 있는 인덱스 찾기    
                //index = 2 
        int index2 = list.lastIndexOf("America");    //해당 값이 있는 인덱스 뒤에서부터         
                //index2 = 1
    }
}
 
Colored by Color Scripter
 
 
  •  LinkedList연결리스트
    • 인접 데이터가 서로 가리키는 식으로 데이터 저장하는 구조
    • 데이터의 추가와 삭제가 빈번한 경우 유용

<<LinkedList 구조>>

LinkedList 함수 모음 : ArrayList와 유사

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.*;
public class LinkedListExample{
    public static void main(String args[]){
        LinkedList<String> list = new LinkedList<String>();    //LinkedList객체 생성
        list.add("South Korea");    //첫번째로 들어가므로 인덱스 0이 South Korea
        list.add("America");        //인덱스 1 : "America"
        list.add("Japan");
        list.add("China");
        list.add(3"Spain");        //인덱스 3 : "Spain"이라 인덱스 4 : "China"
        String a = list.get(2);        //인덱스에 해당하는 값 반환, 0ㅜ터 시작하므로 비효율적
            //a = "Japan"
        int num = list.size();
        //데이터의 순차 접근이 필요할 경우 : iterator객체를 통하여 접근
        Iterator<String> iterator = list.iterator();
        while(iterator.hasNext()){
            String str = iterator.next();
            System.out.println(str);
        }    
    }
}
Colored by Color Scripter