[Java] List

이도원·2022년 11월 23일
0

Java 문법

목록 보기
5/8

List interface 구현한 클래스 - ArrayList, LinkedList, Vector, Stack 등

ArrayList

장점

  • 배열로 만들어졌기 때문에 인덱스를 통해서 특정 데이터에 빠르게 접근.

단점

  • 생성된 배열의 공간이 꽉 찰 때마다 새로운 배열을 생성하고 Copy. 그 과정에서 지연 발생.
  • 배열의 데이터를 삭제 시 Copy 하는 방식을 택하므로 그 과정에서 지연이 발생.
  • 데이터가 많아질수록 Copy에 따른 지연시간이 늘어남.

사용용도

  • 데이터의 양이 일관적이고 삽입, 삭제가 빈번하지 않은 경우에 사용.
  • 데이터의 접근 속도가 중요할 때 사용한다.
import java.util.ArrayList;
ArrayList<String> texts = new ArrayList<>(30);	// 물리적 공간 30 지정
ArrayList<String> texts = new ArrayList<>();	// default 10
//데이터 삽입
texts.add("딸기");	

//논리적 크기 반환 1
texts.size();	

//특정 index에 데이터를 삽입
texts.set(0, "포도");	

//특정 index값에 접근
texts.get(1);

// 인덱스를 이용한 값 삭제 (빠름)
texts.remove(1);

// 값을 검색하여 값 삭제	(느림)
texts.remove("포도");

//논리적 공간 늘리기
texts.add(null);	

LinkedList

장점

  • 데이터의 삽입이나, 삭제 연산이 빠르다.

단점

  • 데이터를 찾으려면 최초 생성 Node부터 Node를 검색. ArrayList의 index 접근보다 느림.

사용용도

  • 데이터에 접근하는 빈도보다 삽입, 삭제가 많을 경우 사용.
    (다만 데이터가 많을수록 삭제할 Node 찾는 검색 시간은 오래 걸림)
  • 맨 앞의 데이터 삭제나, 맨 뒤의 데이터 삭제가 빈번할 때 사용.
import java.util.LinkedList;
//LinkedList의 생성
LinkedList<String> texts = new LinkedList<>();

//데이터 삽입
texts.addFirst("시작");	// 첫 번째 Node의 앞에 삽입
texts.addLast("마지막");	// 마지막 Node의 뒤에 삽입
texts.add(1,"딸기");	//index와 data를 인자값으로 받아서  원하는 위치에 Element를 추가

//논리적인 크기 3
texts.size();

//데이터 수정
texts.set(1, "귤");	// index 1에 있는 String 귤로 수정

//데이터 접근
texts.get(1); // index 1에 있는 값 반환
texts.getLast(); // index 마지막에 있는 값 반환

//데이터 삭제
texts.remove(1);	// 인덱스를 이용한 값 삭제 (0부터 순차적)
texts.remove("코드라떼");	// 값을 검색하여 값 삭제(맨앞 or 맨뒤부터 순차적)
texts.removeFirst();	// 맨 앞의 값을 삭제(굉장히 빠름)
texts.removeLast();	// 맨 뒤의 값을 삭제(굉장히 빠름)
profile
studying

0개의 댓글