Java

ArrayList

langsamUndStetig 2022. 5. 27. 19:26
import java.util.*;

public class bucky {
  public static void main(String[] args) {
  String [] things = {"eggs", "lasers", "hats", "pie"};

  List<String> list1 = new ArrayList<String>();

  //add array items to list
    for(String thing : things) {
      list1.add(thing);
    }
    for(int i=0;i<list1.size();i++){
      System.out.printf("%s ", list1.get(i));
    }

    // arrayList에 있는 값 제거하기
   // String[] moreThings = {"lasers", "hats"};
    //for(String thing : moreThings) {
//      if(list1.contains(thing)){
      //  list1.remove(thing);
//      }
  //  }

    String[] stuffs = {"eggs", "pie"};
    List<String> list3 = new ArrayList<String>();
    for(String stuff : stuffs) {
      list3.add(stuff);
    }

    // list1과 list3 중복된 값 삭제 후, list1 출력
    editList(list1, list3);
    System.out.println();
    for(int i=0;i<list1.size();i++){
      System.out.printf("%s ", list1.get(i));
    }

  }

  public static void editList(Collection<String> l1, Collection<String> l2){
  // iterator()는 Iterable 인터페이스의 메소드를 오버라이딩 한 것.
  // Iterator 를 리턴함.
    Iterator<String> it = l1.iterator();
    while(it.hasNext()) {
       if(l2.contains(it.next()) )
          it.remove();
      }
    }
  }

ArrayList

장점 

1. index 찾는게 매우 빠름

2. 맨 마지막에 값을 추가하거나 삭제, 변경 할 때 매우 빠름

 

단점

1. 배열의 크기가 정해져 있음. (더 많은 값을 넣어야 하면, 새로운 배열을 만든 후 거기에 모든 값을 복사한담에 참조 값을 기존 할당된 변수에 넣어주어야 함)

2. 중간에 있는 값을 변경해야 할 때 너무 느림(일단 그 값을 기준으로 앞이나 뒤를 다 복사하고 진행해야 함.)