YJ의 새벽

JAVA (ArrayList,LinkedList) 본문

SelfStudy/JAVA

JAVA (ArrayList,LinkedList)

YJDawn 2023. 2. 1. 15:06

 

--List 인터페이스를 구현하므로,

   저장순서 O , 중복허용 O 

--값이 삭제되거나 추가되면

  값들이 앞뒤로 밀린다.

 

 

**장점

--배열은 구조가 간단하고, 데이터를 읽는데 걸리는시간이 짧다.

 

**단점

--배열의 길이를 적절히 조절해야함.

--크기를 변경하기위해 새로운 배열을 생성후 복사해야함. (메모리가 낭비)

--중간에 데이터의 삽입/삭제에 시간이 많이 걸린다.

  삽입/삭제 를 위해 다른 데이터를 옮겨야함.

--그러나, 순차적인 데이터 삽입/삭제는 빠르다.

 

 

  • ArrayList

 

    EX))) ArrayList 연습 .

import java.util.ArrayList;
import java.util.Collections;
public class Main {
	public static void main(String[] args) {
    
		ArrayList list1 =new ArrayList(10);
		list1.add(5);
		list1.add(4);
		list1.add(2);
		list1.add(0);
		list1.add(1);
		list1.add(3);
		System.out.println(list1); //[5, 4, 2, 0, 1, 3]

      	 	Collections.sort(list1);        // sort정렬
      	 	System.out.println(list1); //[0, 1, 2, 3, 4, 5]
		
      	 	list1.add("B");
      	 	list1.add("C");
      	 	System.out.println(list1);//[0, 1, 2, 3, 4, 5, B, C]
		
      	 	list1.add(6,"A");                  //"A"넣기
      	 	System.out.println(list1);//[0, 1, 2, 3, 4, 5, A, B, C]
		
      	 	list1.set(6, "AA");               //"AA" 바꾸기
      	 	System.out.println(list1);//[0, 1, 2, 3, 4, 5, AA, B, C]
		
      	 	System.out.println(list1.indexOf("AA")); // 6 번째 
		
      	 	list1.remove(0);                 // 0번째값 삭제.
      	 	System.out.println(list1);//[1, 2, 3, 4, 5, AA, B, C]

	}
}

 

 

  • LinkedList

--배열의 단점을 보완 , ( 크기변경불가 , 삽입삭제 힘든것 )

--배열과 달리 LinkedList 는 불연속적으로 존재하는 데이터를 연결(Link)

--하나하나 노드로 연결되어있다.

 

 **단점

--불연속적이다보니 데이터 접근성이 나쁘다.

--앞에서부터 하나씩 값을 찾아들어가야함.

 

  • doublely LinkedList  (이중연결리스트)

--현재 노드와 앞 , 뒤  노드로 연결을 시켜 앞뒤로 접근성을 향상시킴.

 

  • doubley circular LinkedList (이중 원형 연결리스트)

--맨앞노드와 맨뒤노드를 연결시켜 접근성을 향상시킴.

 

 

 

 

 

 

 

 

 

 

 

 

'SelfStudy > JAVA' 카테고리의 다른 글

JAVA (Comparable , Comparator)  (0) 2023.02.02
JAVA (Iterator, Arrays)  (0) 2023.02.02
JAVA (Stack,Queue)  (0) 2023.02.02
JAVA (Collections Framework)  (0) 2023.02.01
JAVA (CS)  (0) 2023.01.30
Comments