컬렉션 프레임워크 - List

KIHYUK MOON·2023년 1월 31일
0
post-thumbnail
post-custom-banner

List 인터페이스

리스트는 배열과 비슷한 자바의 자료형으로 배열보다 편리한 기능을 많이 가지고 있다.
리스트와 배열의 가장 큰 차이점은 크기가 정해져 있지 않고 동적으로 변하기 때문에 데이터의 크기를 알 수 없을 때 유용하게 사용할 수 있다.

List 특징

  • 요소의 저장 순서가 유지된다.
  • 같은 요소의 중복 저장을 허용한다.
  • 데이터 크기가 고정되어 있지 않다.(동적할당)
  • 데이터를 다루기 위한 여러 방법이 제공된다.

List 사용방법

ex )
list<String> list = new ArrayList<String>();
list.add("내용");
String name = list.get(0);

List 컬렉션 클래스의 종류

  • ArrayList
  • LinkedList
  • Vector
  • Stack

ArrayList 클래스

객체의 배열을 구현한 클래스이며 컬렉션 인터페이스와 그 하위의 List 인터페이스로 구현한다.
객체 순서를 기반으로 순차적으로 자료를 관리하는 프로그램을 구현할 때 사용한다

import java.util.ArrayList;

public class Sample {
    public static void main(String[] args) {
        ArrayList<String> pitches = new ArrayList();
        pitches.add("138");
        pitches.add("129");
        pitches.add("142");
				System.out.println(pitches);
    }
}

add

해당 컬렉션에 요소를 추가하거나 해당 인덱스 위치에 값을 삽입

list.add(0, "130");

get

특정 위치의 값을 가져올때

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

size

ArrayList의 갯수를 리턴

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

contains

리스트 안에 해당 항목이 있는지를 판별하여 그 결과를 boolean 으로 리턴

System.out.println(pitches.contains("142"));

remove

리스트에서 객체에 해당되는 항목을 삭제하고 삭제한 결과를 리턴

System.out.println(pitches.remove("129"));
true

Arrays.asList()

이미 데이터가 존재할 경우 데이터 추가하기

public static void main(String[] args) {
    String[] data = {"138", "129", "142"};
    ArrayList<String> list = new ArrayList<>(Arrays.asList(data));
    System.out.println(list);
}

리스트 정렬하기

  • 오름차순 : Comparator.naturalOrder()
  • 내림차순 : Comparator.reverseOrder()
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;

public class List {
    public static void main(String[] args) {
        ArrayList<String> pitches = new ArrayList<>(Arrays.asList("138", "129", "142"));
        pitches.sort(Comparator.naturalOrder());  // 오름차순으로 정렬
        System.out.println(pitches);  // [129, 138, 142] 출력
    }
}

LinkedList 클래스

사용방법은 ArrayList와 동일하다

LinkedList 클래스는 ArrayList클래스의 단점을 보안하기 위해 만들어졌다.
ArrayList는 요소 사이에 삽입이나 삭제를 하려면 뒤의 값들을 전부 미루거나 당겨야 하지만, LinkedList는 요소들 사이를 link로 연결하여 구성하기 때문에 수월하다.

Vector 클래스

사용방법은 ArrayList와 동일하다

ArrayList와 내부구조가 전부 동일하지만 Vector는 동기화된 메소드로 구성되어 있어 멀티쓰레드 환경에서 안전하다는 차이점이 있다. 다만 ArrayList에 비해 성능은 떨어진다.

profile
개발자 전직중..
post-custom-banner

0개의 댓글