package ex0730;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
/*
ArrayList
: List 인터페이스 구현 클래스
: 검색시 속도가 빠름
: 동기화 되지 않음(멀티 스레드에서 안전하지 않음)
LinkedList
: List 인터페이스 구현 클래스
: 검색은 느림
: 앞에서 추가하고 뒤에서 삭제가 빈번한 경우 빠름
: 앞뒤 아무데서나 추가 삭제 가 빈번한 경우
: 중간에 삽입 삭제시에는 속도가 현저히 떨어짐. LinkedList 사용하지 말 것.
: 동기화 되지 않음(멀티 스레드에서 안전하지 않음)
*/
public class Ex01_List {
public static void main(String[] args) {
List<String> list1 = new ArrayList<>();
list1.add("자바");
list1.add("오라클");
list1.add("서블릿");
System.out.println("ArrayList...");
print(list1);
List<String> list2 = new LinkedList<String>();
list2.add("서울");
list2.add("부산");
list2.add("대구");
System.out.println("\nLinkedList...");
print(list2);
}
public static void print(List<String> list) {
for(String s : list) {
System.out.print(s +" ");
}
System.out.println();
}
}
2021.07.30 - [쌍용강북교육센터/7월] - Q 0729_Ex001~Ex002_List
Q 0729_Ex001~Ex002_List
package ex0729; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.ListIterator; /* - List 인터페이스 : 순서가 있다. : 배열과 유사한 구조 : 가변 길이(저장..
development-writing.tistory.com
내가 여기에서 왜 업캐스팅을 하지? 하고 오늘 수업할 때 선생님께 질문했더니, 예제를 통해 그 이유를 알려주셨다.
업캐스팅을 안했으면 ArrayList 와 LinkedList 두 개를 선언하고 print() 메소드를 정의할 때, 매개변수에
public static void print(ArrayList<String> list1)
public static void print(LinkedList<String> list2) 이렇게 해야 되서, 업캐스팅해서 한 번만 적으면 코드가 짧아진다.
package ex0730;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class Ex02_List {
public static void main(String[] args) {
ArrayList<String> list1 = new ArrayList<>();
LinkedList<String> list2 = new LinkedList<>();
timeTest1("LinkedList", list2);
timeTest1("ArrayList", list1); // 앞줄과 순서를 바꿔보면 시간 차이가 보임
System.out.println("-------------------------------");
timeTest2("LinkedList", list2);
timeTest2("ArrayList", list1);
}
public static void timeTest1(String cls, List<String> list) {
long s, e;
s = System.nanoTime();
for(int i=0; i<20000; i++) {
list.add( String.valueOf(i) );
// 가장 뒤에 추가하는 경우 실행 순서에 따라 차이가 있으나 ArrayList가 빠름
}
e = System.nanoTime();
System.out.printf("%s, 시간:%,d\n", cls, (e-s));
list.clear();
}
public static void timeTest2(String cls, List<String> list) {
long s, e;
s = System.nanoTime();
for(int i=0; i<20000; i++) {
list.add( 0, String.valueOf(i) ); // 앞 추가 삭제시 LinkedList 가 빠름
}
e = System.nanoTime();
System.out.printf("%s, 시간:%,d\n", cls, (e-s));
list.clear();
}
}
이것은 ArrayList와 LinkedList 검색 시 걸리는 시간을 비교해본 것이다.
'쌍용강북교육센터 > 7월' 카테고리의 다른 글
Q 0729_Ex001~Ex002_List (0) | 2021.07.30 |
---|---|
0729_Ex06~Ex09_system : Java API (0) | 2021.07.29 |
0729_ConsoleEx_콘솔 입력 (0) | 2021.07.29 |
0729_Ex01~Ex05_Generic (0) | 2021.07.29 |
0728_Ex11~Ex17_generic : 제네릭 (0) | 2021.07.29 |