Home
Data Structure
자료구조 - 리스트 (ArrayList, LinkedList, Vector)
devfoxstar
devfoxstar
March 09, 2022
1 min

Table Of Contents

01
자료형 종류
02
기본 메서드
03
고급 메서드

List는 배열과 비슷하지만 순서가 있고 중복이 허용됩니다.
그리고 동적 할당이 가능해서 배열보다 편리하게 사용이 가능합니다.

java.util.List 인터페이스는 java.util.Collection을 상속 받습니다.
그리고 ArrayList, LinkedList, Vector, Stack 클래스를 통해 구현됩니다.


자료형 종류

  • ArrayList
    • 배열을 이용해서 자료를 저장
    • 배열은 크기가 정적이라서 요소 변경에 시간 소요
  • LinkedList
    • 이중 연결 리스트를 이용해서 자료를 저장
    • ArrayList에 비해 빠른 처리 가능
  • Vector
    • ArrayList와 동일한 구조로 저장되지만 느림
    • 동기화된 메서드 구성으로 멀티 스레드 환경에서 안전하게 사용 가능
    • 초기에 배열 저장을 위해 사용했고, 현재는 호환성 유지를 위해 남겨둠
  • Stack 정리 문서

기본 메서드

리스트에는 다양한 메서드들이 있습니다. 코드를 통해 하나씩 알아 보겠습니다.
참고로 ArrayList, LinkedList, Vector의 기본적인 사용법은 동일합니다.

import java.util.List;
import java.util.ArrayList;

public class BaseList {

    public static void main(String[] args) {
        List<String> list = new ArrayList<>();

        //add - value
        list.add("A");
        list.add("B");
        list.add("C");
        list.add("E");
        System.out.println(list);   //[A, B, C, E]

        //add - index
        list.add(3, "D");
        System.out.println(list);   //[A, B, C, D, E]

        //indexOf
        int index = list.indexOf("C");
        System.out.println(index);  //2

        //get
        System.out.println(list.get(1));    //B

        //size
        System.out.println(list.size());    //5

        //contains
        System.out.println(list.contains("C"));     //true

        //remove - value
        list.remove("C");
        System.out.println(list);   //[A, B, D, E]

        //remove - index
        list.remove(1);
        System.out.println(list);   //[A, D, E]

        //set
        list.set(0, "C");
        System.out.println(list);   //[C, D, E]

        //clear
        list.clear();
        System.out.println(list);   //[]
    }

}

고급 메서드

이번에는 좀 더 다양한 메서드를 사용해 보겠습니다.

package com.devfoxstar.datastructure.list;

import java.util.*;

public class PlusList {

    public static void main(String[] args) {
        List<String> list = new ArrayList<>(Arrays.asList("A", "C", "B"));

        //for
        for (int i=0; i<list.size(); i++) {
            System.out.println(list.get(i));    //A C B
        }

        //foreach
        for (String item : list) {
            System.out.println(item);   //A C B
        }

        //foreach - Lambda
        list.forEach(s -> System.out.println(s));   //A C B

        //while - Iterator
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());    //A C B
        }

        //Sort - Asc
        Collections.sort(list);
        list.forEach(s -> System.out.println(s));   //A B C

        //Sort - Desc
        Collections.sort(list, Collections.reverseOrder());
        list.forEach(s -> System.out.println(s));   //C B A

        //String.join
        String join = String.join(",", list);
        System.out.println(join);   //C, B, A
    }

}

Tags

#DataStructure#자료구조#리스트#List#ArrayList#LinkedList#Vector

Related Posts

자료구조 - 자바 컬렉션 (Java Collection)
March 01, 2022
1 min
© 2024, All Rights Reserved.

Quick Links

About Me

Media