자바

JAVA STEP 45. LinkedList

2023. 2. 28. 22:21
728x90

★ LinkedList

  • ArrayList와 사용법 아주 유사
  • 내부 구조가 다르다 > 사용 용도가 다르다.
  • 중간 데이터 추가/삭제

★ LinkedList 종류

  • LinkedList : 단방향 탐색
  • Double LinkedList : 양방향 탐색
  • Double Circular LinkedList : 순환 탐색 > 자바의 LinkedList
  • 소스코드
  •  
private static void m1() {
		
		ArrayList<Integer> list1 = new ArrayList<Integer>(); 
		
		list1.add(100);
		list1.add(200);
		list1.add(300);
		
		System.out.println(list1.size());
		
		System.out.println(list1.get(0));
		System.out.println(list1.get(1));
		System.out.println(list1.get(2));
		
		LinkedList<Integer> list2 = new LinkedList<Integer>();
		
		list2.add(100);
		list2.add(200);
		list2.add(300);
		
		System.out.println(list2.size());
		
		System.out.println(list2.get(0));
		System.out.println(list2.get(1));
		System.out.println(list2.get(2));
		
	}

 

★ ArrayList vs LinkedList 속도 비교

private static void m2() {
		
		
		//ArrayList vs LinkedList 속도 비교(능률)
		
		ArrayList<Integer> list1 = new ArrayList<Integer>();
		LinkedList<Integer> list2 = new LinkedList<Integer>();
		
		long begin = 0, end = 0;
		
		//1. 순차적으로 데이터 추가하기, Append
		System.out.println("1. 순차적으로 데이터 추가하기, Append");
		
		begin = System.currentTimeMillis();
		
		for(int i=0; i<10000; i++) {
			list1.add(i);
		}
		
		end = System.currentTimeMillis();
		
		System.out.printf("ArrayList 작업 시간 : %,dms\n", end-begin);
		
		//Linked List
		begin = System.currentTimeMillis();
		
		for(int i=0; i<10000; i++) {
			list2.add(i);
		}
		
		end = System.currentTimeMillis();
		
		System.out.printf("LinkedList 작업 시간 : %,dms\n", end-begin);
		
		
		
		
		//2. 중간에 데이터 추가하기, Insert
		System.out.println("2. 중간에 데이터 추가하기, Insert");
		
		begin = System.currentTimeMillis();
		
		for(int i=0; i<10000; i++) {
			list1.add(0, i);
		}
		
		end = System.currentTimeMillis();
		
		System.out.printf("ArrayList 작업 시간 : %,dms\n", end-begin);
		
		//Linked List
		begin = System.currentTimeMillis();
				
		for(int i=0; i<10000; i++) {
			list2.add(0, i);
		}
				
		end = System.currentTimeMillis();
				
		System.out.printf("LinkedList 작업 시간 : %,dms\n", end-begin);
		
		
		//3. 중간에 있는 데이터 삭제하기
		System.out.println("3. 중간에 있는 데이터 삭제하기");
		
		begin = System.currentTimeMillis();
		
		for(int i=0; i<1000; i++) {
			list1.remove(0);
		}
		
		end = System.currentTimeMillis();
		
		System.out.printf("ArrayList 작업 시간 : %,dms\n", end-begin);
		
		//Linked List
		begin = System.currentTimeMillis();
						
		for(int i=0; i<10000; i++) {
			list2.remove(0);
		}
						
		end = System.currentTimeMillis();
						
		System.out.printf("LinkedList 작업 시간 : %,dms\n", end-begin);
		
		//4. 순차적인 데이터 삭제하기
		System.out.println("4. 순차적인 데이터 삭제하기");
		
		begin = System.currentTimeMillis();
		
		for(int i=list1.size(); i<=0; i--) {
			list1.remove(i);
		}
		
		end = System.currentTimeMillis();
		
		System.out.printf("ArrayList 작업 시간 : %,dms\n", end-begin);
		
		//Linked List
		begin = System.currentTimeMillis();
		
		for(int i=list2.size(); i<=0; i--) {
			list2.remove(i);
		}
		
		end = System.currentTimeMillis();
		
		System.out.printf("LinkedList 작업 시간 : %,dms\n", end-begin);
		
	}
728x90
저작자표시 비영리 변경금지 (새창열림)

'자바' 카테고리의 다른 글

JAVA STEP 47. 함수형 인터페이스  (0) 2023.03.02
JAVA STEP 46. lambda  (0) 2023.02.28
JAVA STEP 44. File 입출력 예제  (0) 2023.02.27
JAVA STEP 43. File 입출력  (0) 2023.02.27
JAVA STEP 42. 재귀 메소드  (0) 2023.02.27
'자바' 카테고리의 다른 글
  • JAVA STEP 47. 함수형 인터페이스
  • JAVA STEP 46. lambda
  • JAVA STEP 44. File 입출력 예제
  • JAVA STEP 43. File 입출력
IT의 큰손
IT의 큰손
IT계의 큰손이 되고 싶은 개린이의 Log 일지
IT의 큰손
Developer Story House
IT의 큰손
전체
오늘
어제
  • 분류 전체보기 (457)
    • 정보처리기사 필기 (18)
    • 정보처리기사 실기 (12)
    • 정보처리기사 통합 QUIZ (12)
    • 빅데이터 (11)
    • 안드로이드 (11)
    • 웹페이지 (108)
    • 자바 (49)
    • SQLD (3)
    • 백준 알고리즘 (76)
    • 데이터베이스 (41)
    • 깃허브 (2)
    • Library (14)
    • Server (31)
    • 크롤링&스크래핑 (3)
    • Spring (23)
    • Vue.js (13)
    • React (27)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Developer Stroy House

인기 글

태그

  • 데이터베이스
  • IT자격증
  • java
  • 웹페이지
  • 웹개발
  • React
  • 자바
  • 정보처리기사
  • 프론트엔드
  • ajax
  • DB
  • 알고리즘
  • 개발블로그
  • DBA
  • html
  • jquery
  • 백엔드
  • jsp
  • css
  • IT개발자
  • 앱개발자
  • 백준
  • JavaScript
  • it
  • IT자격증공부
  • 웹개발자
  • 코딩테스트
  • 정보보안전문가
  • 정보처리기사필기
  • 개발자

최근 댓글

최근 글

Designed By hELLO
IT의 큰손
JAVA STEP 45. LinkedList
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.