LinkedList 연결리스트


배열과 같이 메모리공간이 열결된 것이 아니라 다음 데이터를 레퍼런스하는 주소값으로 연결된 형태라 메모리공간이 불규칙하게 분산되어 있습니다. 데이터 탐색에는 시간이 오래 걸리지만 데이터 추가 및 삭제는 빠릅니다.

import java.util.Iterator;

import java.util.LinkedList;


public class ExamLinkedList {

public static void main(String[] args) {

  int index;

  LinkedList<String> list = new LinkedList<>();

  LinkedList<String> list2 = new LinkedList<>();

  list.add("A");

  list.add(0, "B");

  list.addFirst("C");

  list.addLast("D");

  System.out.println("list 를 처음부터 index 와 값을 출력");
  for(String str:list){

   index = list.indexOf(str);

   System.out.println("index:"+index+" value:"+str);

  }


  System.out.println("list 에 B값이 있는지 : ");
  boolean boo = list.contains("B");
  System.out.println(boo);

  System.out.print("list 에 처음값 : ");  
  System.out.println(list.getFirst());
  System.out.print("list 에 마지막값 : ");
  System.out.println(list.getLast());

  System.out.println("list 를 처음부터 index 와 값을 출력");
  for(String str:list){
   index = list.indexOf(str);
   System.out.println("index:"+index+" value:"+str);
  }

  list2.add("A"); list2.add("C"); list2.add("A"); list2.remove(1);

  System.out.print("list2 의 값이 list에 모두 포함되었는지 : ");
  boo = list.containsAll(list2);
  System.out.println(boo);

  System.out.println("list2 를 처음부터 index 와 값을 출력");
  for(String str:list2){

   index = list2.indexOf(str);

   System.out.println("index:"+index+" value:"+str);

  }

  System.out.print("list2 가 비었는지 : ");
  System.out.println(list2.isEmpty());

  Iterator<String> iter = list.iterator();

  System.out.println("iterator 를 사용해 다음값 출력");
  System.out.println(iter.next());

  System.out.println(iter.next());

  System.out.println(iter.next());

  System.out.println(iter.next());

  System.out.print("iter 에 다음값이 존재하는지 : ");
  System.out.println(iter.hasNext());

 

  list.clear();
  System.out.print("list 를 clear : ");
  System.out.println(list.isEmpty());

 }

}

 

출력

 

list 를 처음부터 index 와 값을 출력
index:0 value:C
index:1 value:B
index:2 value:A
index:3 value:D
list 에 B값이 있는지 :
true
list 에 처음값 : C
list 에 마지막값 : D
list 를 처음부터 index 와 값을 출력
index:0 value:C
index:1 value:B
index:2 value:A
index:3 value:D
list2 의 값이 list에 모두 포함되었는지 : true
list2 를 처음부터 index 와 값을 출력
index:0 value:A
index:0 value:A
list2 가 비었는지 : false
iterator 를 사용해 다음값 출력
C
B
A
D
iter 에 다음값이 존재하는지 : false
list 를 clear : true


'SW > 자료구조' 카테고리의 다른 글

ArrayList 어레이리스트  (0) 2017.01.23
Arrays 배열  (0) 2017.01.23

ArrayList 어레이리스트

 

ArrayList 는 배열과 마찬가지로 메모리가 인접해 있다. 사용법은 배열과 동일하다 단 여러가지 기능이 추가된 배열이다.

데이터 추가, 삭제를 하면 가장 마지막에 데이터가 추가, 삭제된다. 중간에 데이터를 추가하면 추가한공간만큼 데이터가 뒤로 밀리고 중간에 삭제하면 삭제된 공간만큼 데이터가 당겨진다. 배열은 생성시에 크기를 정해야하지만 ArrayList 는 크기를 정하지 않고 공간이 모두차면 자동으로 2배씩 공간이 증가한다. 배열인 만큼 데이터 검색은 빠르지만 중간의 데이터 추가, 삭제시에 부하가 많이 걸린다.

 

import java.util.*;
public class ExamArrayList {


 public static void main(String[] args) {
  ArrayList<Integer> list = new ArrayList<>();

  list.add(1); // list 에 1추가
  list.add(3); // list 에 3추가
  list.add(5); // list 에 5추가
  System.out.print("list에 index 2 의 값 : ");
  System.out.println(list.get(2)); //index 2 인 값 가져오기
  
  System.out.print("list size : ");
  System.out.println(list.size()); //list size 알아내기
  
  System.out.println("list 비었는지 확인 : ");
  boolean boo = list.isEmpty(); //list 비었는지 확인
  System.out.println(boo);
  
  System.out.print("list 에 3 값이 포함되어 있는지 확인 : ");
  boo = list.contains(3);   //list 에 3 값이 포함되어 있는지 확인
  System.out.println(boo);
  
  System.out.print("index 1 인 값 제거 : ");
  list.remove(1);     //index 1 인 값 제거
  System.out.println(list.toString());
  
  System.out.print("index 1에 4값 추가하기 : ");
  list.add(1, 4);     //index 1에 4값 추가하기
  System.out.println(list.toString());
  
  System.out.println("index 2 값을 6으로 대체 : ");
  list.set(2, 6);     //index 2 값을 6으로 대체
  System.out.println(list.toString());
  
  System.out.print("4값이 들어있는 index 값 반환 : ");
  System.out.println(list.indexOf(4)); // 4값이 들어있는 index 값 반환

  Iterator<Integer> iter = list.iterator(); // iterator 로 값을 순차접근
  
  System.out.print("iterator 로 값을 가져오기");
  while(iter.hasNext())   //다음 값이 존재하는지 확인
   System.out.print(iter.next()); // 다음값 가져오기
  System.out.println();
  
  System.out.print("list 를 clear했는지 : ");
  list.clear();  //list 비우기
  boo = list.isEmpty();
  System.out.println(boo);
 }

}

출력

list에 index 2 의 값 : 5
list size : 3
list 비었는지 확인 :
false
list 에 3 값이 포함되어 있는지 확인 : true
index 1 인 값 제거 : [1, 5]
index 1에 4값 추가하기 : [1, 4, 5]
index 2 값을 6으로 대체 :
[1, 4, 6]
4값이 들어있는 index 값 반환 : 1
iterator 로 값을 가져오기146
list 를 clear했는지 :true

'SW > 자료구조' 카테고리의 다른 글

LinkedList 연결리스트  (0) 2017.01.25
Arrays 배열  (0) 2017.01.23

배열 Arrays

배열의 기능에 대해 간략한 예제로 알아본다.

import java.util.Arrays;

/**
 *
 * @author awj
 * 배열 Arrays
      배열의 기능에 대해 간략한 예제로 알아본다.
      ctrl+I 들여쓰기 정리
      shift+ctrl+O 자동 import     
 */

public class Arrays20180404 {

 public static void main(String[] args) {

  int[] A = new int[10];
  int N = 10;

  int[] B = new int[N];
  for(int i=0;i<A.length;i++)
   A[i]=i+1;
  
  System.out.print("A 배열 최초값 : ");  
  for(int i=0;i<A.length;i++)
   System.out.print(A[i]);
  System.out.println();    
  
  B = Arrays.copyOf(A, 6); // A[0] ~ A[5] 까지 copy
  
  System.out.print("A[0] ~ A[5] 까지 B[] 에 copy : ");
  for(int i=0;i<B.length;i++)
   System.out.print(B[i]);
  System.out.println();
  
  
  B = Arrays.copyOfRange(A, 1, 3); // A[1] ~ A[2] 까지 copy
  
  System.out.print("A[1] ~ A[2] 까지 B[] 에 copy : ");
  for(int i=0;i<B.length;i++)
   System.out.print(B[i]);
  System.out.println();

  B = A.clone();  // clone 복사
  
  System.out.print("B에 A를 clone 복사 후 같은지 비교 : ");
  boolean boo = A.equals(B);
  System.out.println(boo);  
  
  A[0] = -1;
  for(int i=0;i<A.length;i++)
   System.out.print(A[i]);
  System.out.println();
  for(int i=0;i<B.length;i++)
   System.out.print(B[i]);
  System.out.println();
    
  B = A;    //reference 복사
  
  System.out.print("B에 A를 reference 복사 후 같은지 비교 : ");
  boo = A.equals(B);
  System.out.println(boo);
  
  for(int i=0;i<A.length;i++)
   System.out.print(A[i]);
  System.out.println();
  for(int i=0;i<B.length;i++)
   System.out.print(B[i]);
  System.out.println();
  
  System.out.print("A[] 요소값 전부출력 : ");  
  System.out.println(Arrays.toString(A)); // 요소값 전부찍기

  A = new int[10];
  for(int i=0;i<A.length;i++)
   A[i] = i; 
  for(int i=0;i<B.length;i++)
   B[i] = (B.length-1-i) * 2;
  
  System.out.print("정렬 전 B[] : ");  
  System.out.println(Arrays.toString(B));
  
  Arrays.sort(B); // 정렬
  
  System.out.print("binary Search 로 값을 못찾을경우 : ");
  System.out.println(Arrays.binarySearch(B, 7)); // 값을 못찾을경우 음수
  
  System.out.print("binary Search 로 찾은 인덱스 위치 : ");
  System.out.println(Arrays.binarySearch(B, 12)); // 12가 존재하는 인덱스값
  
  System.out.print("A 배열값  : ");
  System.out.println(Arrays.toString(A)); // A 배열값 출력
  System.out.print("B 배열값  : ");
  System.out.println(Arrays.toString(B)); // B 배열값 출력


 }

}


출력

A 배열 최초값 : 12345678910
A[0] ~ A[5] 까지 B[] 에 copy : 123456
A[1] ~ A[2] 까지 B[] 에 copy : 23
B에 A를 clone 복사 후 같은지 비교 : false
-12345678910
12345678910
B에 A를 reference 복사 후 같은지 비교 : true
-12345678910
-12345678910
A[] 요소값 전부출력 : [-1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
정렬 전 B[] : [18, 16, 14, 12, 10, 8, 6, 4, 2, 0]
binary Search 로 값을 못찾을경우 : -5
binary Search 로 찾은 인덱스 위치 : 6
A 배열값  : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
B 배열값  : [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

'SW > 자료구조' 카테고리의 다른 글

LinkedList 연결리스트  (0) 2017.01.25
ArrayList 어레이리스트  (0) 2017.01.23

+ Recent posts