List 계열 자료구조

이한수·2022년 8월 4일
0

자료구조

목록 보기
1/3
post-thumbnail

참고:https://coding-factory.tistory.com/551
https://coding-factory.tistory.com/552

List 특징

  • 객체를 순서에 따라 저장합니다.
  • 중복을 허용합니다.

🚗ArrayList

  • 일반적인 배열과 같은 순차 리스트 입니다.

  • 배열과 달리 크기가 부족해지면 자동으로 부족한 크기만큼 용량을 늘립니다.

  • 인덱스로 내부 데이터에 직접 접근이 가능합니다.

  • 삭제나 추가가 잦을 경우 , 데이터들의 이동으로 인해 효율이 좋지 않습니다.

  • 데이터가 크기를 넘어서는 순간, 큰 용량의 배열을 새로 만들고 기존 항목을 복사합니다.

    //선언
    ArrayList<String> arrayList = new ArrayList<>();
    
    //초기 용량 지정(디폴트 값은 크기 10의 배열 생성)
    ArrayList<String> arrayList = new ArrayList<>(20);
    
    //순차적 추가
    arrayList.add("나는");
    
    //원하는 위치 추가
    //기존 인덱스 위치부터 그 뒤로 하나씩 밀려난다.
    arrayList.add(인덱스,"15살이고 싶다");
    
    //수정
    arrayList.set(인덱스 , "그건 불가능 해");
    
    //삭제
    arrayList.remove("나는");
    
    //모든 값 제거
    arrayList.clear();
    
    //크기
    arrayList.size();
    
    //가져오기
    arrayList.get(인덱스);
    
    //값이 있는지 확인(true/false)
    arrayList.contains("나는");
    
    //값의 인덱스 번호 얻어오기 (없을 경우 -1)
    arrayList.indexOf("15살이고 싶다");

🚗LinkedList

  • 각 노드가 데이터와 다음 데이터에 대한 주소값을 가지고 있습니다.

  • 추가 및 삭제가 발생할 경우, 노드가 가지고 있는 주소값만 바꿔주기 때문에 데이터의 변경 작업이 많을 경우 유리합니다.

  • 특정 요소에 접근할 때 처음부터 순차적으로 접근하기에 조회 속도는 느립니다.

  • 내부에서 배열을 사용하지 않아 ArrayList 처럼 크기 이상이 될 경우 배열을 새로 생성하여 복사하지 않습니다.

 //선언
LinkedList<String> linkedList = new LinkedList<>();
 
 //맨앞에 추가
 linkedList.addFirst("배고프다");
 
 //맨뒤에 추가
 linkedList.addLast("배고프다");
 
 //추가(마지막에 추가)
 linkedList.add("배고프다");
 
 //원하는 위치 추가
 linkedList.add(인덱스 , "배고프다");
 
 //삭제(removeFirst() , removeLast()도 있음)
 linkedList.remove("배고프다");
 linkedList.remove();	//0번쨰 삭제.
 
 //모두 삭제
 linkedList.clear();
 
 //수정
 linkedList.set(인덱스 , "배고프다2");
 
 //크기
 linkedList.size();
 
 //가져오기
 linkedList.get(인덱스);
 
 //값이 있는지 확인(true/false)
 linkedList.contains("배고프다");
 
 //값의 인덱스 번호 얻어오기 (없을 경우 -1)
 linkedList.indexOf("배고프다");

Vector의 경우 ArrayList와 다 같지만, 차이점이 있다면 동기화를 지원하기에 생략하겠습니다.

profile
성실하게

0개의 댓글