본문 바로가기
개발 이야기/자바

[JAVA] ArrayList와 LinkedList를 통해 가변 배열 구현

by 런던살자 2019. 6. 23.

안녕하세요 마블랑입니다.

 

프로그래밍에서는 기본적으로 사용할수 있는 배열은 처음 길이를 선언하고 사용하는 고정길이 배열입니다.

 

그래서 JAVA에서 길이가 변하는 동적배열을 이용하고 싶을때는 List라는 것을 사용합니다.

 

List를 사용하여 원하는 만큼 데이터를 삽입하고 꺼내서 사용할수 있습니다.

 

 

자바에서 사용하는 List는 ArrayList와 LinkedList가 있습니다. 

 

바로 샘플 코드로 알아보겠습니다.

 

 

1. ArrayList 

package MainPac;

import java.util.ArrayList;
import java.util.LinkedList;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		// ArrayList Test
		ArrayList<String> list_str = new ArrayList<String>();

		//데이터 삽입
		list_str.add("Seoul");
		list_str.add("Busan");
		list_str.add("NewYork");
		list_str.add("London");
		list_str.add("Roma");
		list_str.add("Incheon");

		//삭제
		list_str.remove(1);
		list_str.remove("Roma");
		
		//출력
		for (int i = 0; i < list_str.size(); i++) {
			System.out.println(list_str.get(i));
		}

	}
}

 

 

2. LinkedList 

package MainPac;

import java.util.ArrayList;
import java.util.LinkedList;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		// LinkedList Test
		LinkedList<String> linked_str = new LinkedList<String>();

		//데이터 추가
		linked_str.add("Banana");
		linked_str.add("Apple");
		linked_str.add("Tomato");
		linked_str.add("Honey");
		linked_str.add("Melon");
		linked_str.add("Watermelon");
		linked_str.add("Cherry");
        
        //데이터 삭제
		list_str.remove(3);
		list_str.remove("Watermelon");
        
		//출력
		for (int i = 0; i < list_str.size(); i++) {
			System.out.println(linked_str.get(i));
		}
	}
}

 

 

주석 부분을 참고하여 각 List들을 사용하시면 되겠습니다.

 

ArrayList와 LinkedList의 차이에 대해서 설명을 드리면

 

ArrayList는 하나의 변수처럼 사용됩니다. 그래서 중간에 데이터 삽입이 되면 그 뒤에 데이터의 인덱스를 하나씩 미뤄주는데 이때 데이터가 많이 있다면 많은 시간을 소요하게 됩니다. 데이터 삭제일 경우에도 마찬가지입니다.

 

그렇지만 데이터가 서로 연결되어 있어 데이터 검색에는 상대적으로 좋은 성능을 가지고 있습니다.

 

반면에 LInkedList는 주소형식으로 리스트를 묶은 것이기 때문에 중간에 데이터가 삽입이 되면 이전 데이터가 주소만 변경해주면 되기때문에 데이터의 삽입 및 삭제가 용이합니다. 

 

하지만 LinkedList는 주소형식으로 되어 있기때문에 자료의 검색에는 시간이 걸린다는 단점을 가지고 있습니다.

 

 

각각의 리스트가 장, 단점을 가지고 있으니 알맞은 리스트를 사용하시기 바랍니다.^^

 

 

이상 마블랑이었습니다.

 

읽어주셔서 고맙습니다.

댓글