너와 나의 프로그래밍

JAVA - ArrayList, LinkedList 간략 정리 본문

Back-End/Java Example

JAVA - ArrayList, LinkedList 간략 정리

Whatever App's 2018. 2. 21. 01:28

 

[JAVA] List - ArrayList, LinkedList 간략 정리

 

 

 

"List"란 데이터를 일렬로 늘어놓은 자료구조. (ArrayList와 LinkedList 클래스가 있음)

 

ArrayList : 내부에 있는 배열에 데이터를 저장.

 

ArrayList<타입 파라미터> 객체명 = new ArrayList<타입 파라미터>(배열 수);

 

/* 타입 파라미터를 프리미티브 타입으로 정하면 안됨 */

/* ()는 기본적으로 10개의 배열이 들어가지만 50이나 60으로 배열의 크기를 설정 가능 */

 

 

예: ArrayList의 메소드 활용

 

import java.util.ArrayList;

 

public class ArrayListExample {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

ArrayList<String> list = new ArrayList<String>(); // String 값만 들어갈 수 있는 ArrayList 객체 생성

list.add("포도");//--------- 1

list.add("딸기");

list.add("복숭아");

 

list.add(2,"키위");//--------- 2

list.set(0,"오렌지");//-------- 3

list.remove(1); // ------------4

list.remove("키위");

int num = list.size();

for(int cnt = 0; cnt < num; cnt ++){

String str = list.get(cnt); // --------- 5

System.out.println(str);

}

}

 

}

add 메소드 : 1. add 메소드는 배열에 데이터를 추가 할 수 있다. 리스트의 마지막에 데이터를 추가하는 형식.(stack)
      2. 예를들어 주석 1번은 포도,딸기,복숭아를 add 메소드로 추가를 한다면 "포도,딸기,복숭아"식으로 데이터가 추가 된다.
      3. add 메소드로 배열 중간에 삽입시 add(인덱스,객체) 형식으로 사용한다. 주석 2번의 경우 "포도,딸기,키위,복숭아"가 된다.
 
set 메소드 :  주석 3번과 같이 set(인덱스,객체)의 경우 0번 인덱스 객체를 "오렌지"로 "교체"할 때 쓰는 메소드이다.
      결과값은 "오렌지,딸기,키위,복숭아" (0번의 포도가 오렌지로 바뀌었다.)
 
remove 메소드 : 배열안 데이터를 삭제할 때 사용하는 메소드이다. 주석 4번은 인덱스가 1번인 데이터를 삭제 하겠다는 방식이다. 
     마찬가지로 remove 메소드에 직접적으로 데이터를 넣어 삭제를 할 수도 있다.
 
 
get 메소드 : get 메소드는 리스트에 있는 데이터를 가져올 수 있다. 이때 배열의 "인덱스"로 넘겨줘야 된다. 주석 5번은 list의 size 메소드를 사용하여 데이터의 길이를 먼저 구한 뒤, 배열문을 통해 값을 구하는 식이다.
 
indexOf 메소드 : 위 예제에는 없지만 indexOf()는 데이터의 검색에 사용되는 메소드로 검색할 데이터와 똑같은 파라미터로 넘겨주면 리스트에서 찾아서 "인덱스"로 값을 리턴해준다. 예를들어 list.indexOf("포도")인 경우 "0"(인덱스)으로 값이 리턴된다.
 
 
 
LinkedList : 인접 데이터가 서로 가리키는 식으로 데이터를 저장.
 

LinkedList<타입 파라미터> list = new LinkedList<타입 파라미터>();
/* ArrayList와 객체 생성 방식은 같다. *//* 하지만 ArrayList 처럼 객체를 넣을 수 있는 저장 할 수 있는 공간이 생기는 것은 아니다. */

 

예 : LinkedList의 메소드 활용(위 ArrayList 예제와 동일)

 

import java.util.LinkedList

 

public class LinkedListExample {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

LinkedList<String> list = new LinkedList<String>(); // String 값만 들어갈 수 있는 LinkedList객체 생성

list.add("포도");//--------- 1

list.add("딸기");

list.add("복숭아");

 

list.add(2,"키위");//--------- 2

list.set(0,"오렌지");//-------- 3

list.remove(1); // ------------4

list.remove("키위");

int num = list.size();

for(int cnt = 0; cnt < num; cnt ++){

String str = list.get(cnt); // --------- 5

System.out.println(str);

}

}

}

 

add 메소드 : 1. LinkedList에서의 add는 ArrayList와는 다른 방식으로 추가된다.
2. 기존 파라미터로 넘겨준 데이터가 먼저 저장된 데이터와 서로 상대방을 가리키는 형태로(링크) 저장된다.
3. 마찬가지로 add 메소드에 인덱스를 넣어 데이터를 삽입 할 때도 인접한 객체와 서로 가리키는 형태로 저장된다.
 
remove 메소드 : ArrayList 같은 경우 데이터가 삭제되면 한 칸씩 앞으로 이동하지만 LinkedList는 인접한 데이터들의 링크가 끊어졌다가 두 데이터가 직접 연결되는 방식으로 삭제가 이루어 진다. 

 

 

Iterator : LinkedList의 데이터의 위치를 기억하고 있다가 다음 데이터를 찾는 메소드.

 

 

Iterator<타입 파라미터> iterator= 객체.iterator();
/* Iterator는 Iterator 타입의 객체를 리턴하는 메소드이다. *//* 이 타입의 파라미터는 LinkedList에서 사용한 타입 파라미터와 맞아야 한다. */

 

예 : LinkedList와 Iterator 메소드 활용

 

import java.util.Iterator;

import java.util.LinkedList;

 

public class LinkedListTest {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

LinkedList<String> list = new LinkedList<String>();

list.add("망고");

list.add("파인애플");

list.add("바나나");

Iterator<String> iterator = list.iterator();

while(iterator.hasNext()){

String str = iterator.next();

System.out.println(str);

}

}

}

 

Iterator의 "hasNext()" 메소드는 LinkedList에 데이터가 있는지 확인하는 메소드이다. 리턴값은 "true"와 "false"다.

먼저 "hasNext()" 메소드를 사용해 데이터를 확인한 뒤 "next()" 메소드를 사용해 LinkedList의 데이터를 순서대로 읽어올 수 있다.

만약 hasNext()의 검증이 안되고 next() 메소드만 사용할 시 "NoSuchElementException"이 발생한다.

반응형

'Back-End > Java Example' 카테고리의 다른 글

JAVA - 정규식으로 문자열 찾기  (0) 2018.05.25
JAVA - 문자열  (0) 2018.05.23
JAVA - HashMap, HashSet 간략 정리  (2) 2018.02.22
JAVA - Active Directory(LDAP) 연결 예제 소스  (0) 2017.09.22