티스토리 뷰

import java.util.LinkedList;


public class Main {

      public static void main(String[] args) {
            //add한 순서를 지켜주는 List 입니다.
            LinkedList<Integer> list = new LinkedList<>();
            list.add(1);
            list.add(2);
            list.add(3);
            //특정 인덱스에 추가
            list.add(1, 2);
            //특정 인덱스의 값 삭제
            list.remove(2);

            System.out.println("list = " + list);
            //둘은 같음 ( 오토 박싱 )
            System.out.println(list.contains(3));
            System.out.println(list.contains(Integer.valueOf(3)));

            LinkedList<MyData> myData = new LinkedList<>();
            myData.add(MyData.create(1));
            myData.add(MyData.create(2));
            myData.add(MyData.create(3));

            System.out.println(myData.contains(MyData.create(2))); // true
            //하지만 해당 MyData 에 toString 과 equals 를 오버라이딩하지 않는 경우 Objects 값의 같은 값을 비교해도 같은 값을 반환하지 않음.
            

      }

}

- LinkedList 실습.

public class MyData {

      int value;

      public MyData(int value) {
            this.value = value;
      }

      static MyData create(int value) {
            return new MyData(value);
      }

      @Override
      public String toString() {
            return "MyData{" + "value=" + value + '}';
      }

      @Override
      public boolean equals(Object o) {
            if (this == o) {
                  return true;
            }
            if (o == null || getClass() != o.getClass()) {
                  return false;
            }

            MyData myData = (MyData) o;

            return value == myData.value;
      }

      @Override
      public int hashCode() {
            return value;
      }

}

- 다형성

public class Main {

      public static void main(String[] args) {
            List<MyData> list = new Vector<>(); // 벡터형인데, 리스트형으로도 표현 가능하다 >> 다형성
            list.add(MyData.create(1));
            list.add(MyData.create(2));
            list.add(MyData.create(3));

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

            //다형성때문에 보통 파라미터를 List 로 받는 경우가 대부분입니다.
            
      }

}

-List 의 초기갯수??

public static void main(String[] args) {
      //arraylist > 초기갯수 설정가능! > get으로 인덱스로 불러올 수 있음
      //linkedlist > 인덱스로
      List<MyData> list = new ArrayList<>(1);
      list.add(MyData.create(1));
      list.add(MyData.create(2));
      list.add(MyData.create(3));

      method1(list);
      
}

static void method1(List<MyData> list) {
      System.out.println(list);
      System.out.println(list.size());
      System.out.println(list.isEmpty());

}

 

  Arraylist LinkedList
데이터의 검색 좋음 별로..
데이터의 추가, 삭제 별로.. 좋음

- Linkedlist에서 데이터의 삽입, 삭제시에서는 ArrayList와 비교해 굉장히 빠르다.

- LinkedList는 이전 노드와 다음 노드를 참조하는 상태만 변경하면 된다. > 삽입, 삭제시 O(1) 의 시간 복잡도를 가짐

- ArrayList의 경우 삽입, 삭제 이후 다른 데이터를 복사해야 하기때문에 최악의 경우 O(N)의 성능을 낸다.

 


  • ArrayList와 Vector의 차이????
    • 멀티 스레드 환경에서는 Vector > threadSafe 하다
    • 하지만 조금더 오버헤드가 발생함
    •  Vector 는 자체적으로 Array의 특징을 가진다. > 검색에 용이...
    • Arraylist는 Vector와 다름
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함