티스토리 뷰
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와 다름
'자료구조' 카테고리의 다른 글
자료구조 | 2-2 순열검사 ( 실습 ) (0) | 2022.06.01 |
---|---|
자료구조 | 2-2 최대값의 인덱스값 반환 (0) | 2022.06.01 |
자바 자료구조 | 1-3. 알고리즘과 시간 복잡도 (0) | 2022.05.31 |
자바 자료구조 | 1-2. 컴퓨터가 데이터를 다루는 방법 (0) | 2022.05.30 |
자바 자료구조 | 1. 개요 (0) | 2022.05.30 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 오
- Git
- 2진수
- java
- 알고리즘
- 1063
- 구현
- K번째수
- 자료구조
- 카카오 코딩테스트
- solved.ac
- ASCII코드
- 크레인 인형뽑기 게임
- 10진수
- 브루트포스
- 킹
- 2019 카카오 개발자 겨울 인턴십
- 백준
- 인형뽑기
- 프로그래머스
- 코딩테스트
- stack
- 자료표현
- 프로그래머스 # 음양더하기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함