코딩하렴

JAVA에서의 LinkedList 설명과 사용법 그리고 함수

by 으렴

일단 메인에 Linked List를 다 때려 박는다.

public static void main(String[] args) throws InterruptedException {
      LinkedList<Integer> link1 = new LinkedList<Integer>();
      LinkedList<Integer> link2 = new LinkedList<Integer>();
      LinkedList<Integer> link3 = new LinkedList<Integer>();
      LinkedList<Integer> link4 = new LinkedList<Integer>();
      LinkedList<Integer> link5 = new LinkedList<Integer>();
      
      for(int i = 0 ; i < 10 ; i++) {
         link1.add(i*10);
      }
}

for문 돌려서 link1에다가 넣어봄

 

System.out.println("link1 print : " + link1);
System.out.println("link1 size : " + link1.size());

//link1 print : [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
//10

요래 나와유

link1에 값을 넣은그져

 

자 그럼 값을 복사한다.

 link2.addAll(link1);
System.out.println("link2 print : " + link1);

//link2 print : [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]

그럼 값이 요로코롬 나온다.

 

자 그럼 link3에 포문을 돌려본다.

for(int i = 0 ; i < 5 ; i++)
	link3.add(i);
    
link3.addAll(3, link2);		//원하는 위치부터 link2를 복사해서 추가한다.
link3.addFirst(100);		//link3의 제일 처음에 추가
link3.addLast(1000);		//link3의 제일 마지막에 추가

System.out.println("link3 print : " + link3);

//link3 print : [100, 0, 1, 2, 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 3, 4, 1000]

내가 원한 인덱스에 맨처음은 100, 맨뒤는 1000이 들어간 것을 확인 할 수 있다.

 

link4.addAll(link1);	//복사해서 더함
System.out.println("link4 print : " + link4);
link4.clear(); // link4를 모두 지움
System.out.println("link4 print : " + link4);


//link4 print : [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
//link4 print : []

리스트 클리어를 하게 되면 모두 지워진 것을 확인 할 수 있다.

 

      System.out.println("link4 print : " + link4);
      
      link4.clone();   //링크드 리스트 객체의 단순 복사본을 반환
      link4.contains(link2); 	//리스트 안에 있는 데이터중 찾고자 하는 값이 존재하는지 확인 할 수 있는 함수
      							//인자로 object를 넘기면 boolean을 리턴
      
      // link4.element()는 제일 처음 반환 header
      System.out.println("link4 print : " + link4.element());
      
      // link4.equals(link3) -> link3과 link4의 데이터가 같다면 true 다르면 false
      System.out.println("link4 print : " + link4.equals(link5));
      
      // link4의 5번째 있는 요소를 반환
      System.out.println("link4 print : " + link4.get(5));
      
      // link4가 비었으면 true, 비어있지 않으면 false
      System.out.println("link4 print : " + link4.isEmpty());
      
      
//		link4 print : [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
//		link4 print : 0
//		link4 print : false
//		link4 print : 50
//		link4 print : false

여기서 중요한 것은 clone과 contains!

 

contains는 굉장히 많이 사용되니 외워라

      link4.remove(5);
      System.out.println("link4 print : " + link4);
    
      link4.remove();// 그냥 remove()를 사용하면 맨 처음에 있는 데이터를 제거함
      System.out.println("link4 print : " + link4);

      link4.removeAll(link4); // link4에 있는 모든 데이터 제거
      System.out.println("link4 print : " + link4);
      
      
      //link4 print : [0, 10, 20, 30, 40, 60, 70, 80, 90]
      //link4 print : [10, 20, 30, 40, 60, 70, 80, 90]
      //link4 print : []

 

삭제와 관련된 요소덜

      link4.addAll(link1);
      // link4의 첫번째 요소 제거
      link4.removeFirst();
      System.out.println("link4 print : " + link4);
      
      link4.removeFirstOccurrence(link1); //뭐죠?
      // link4의 마지막 요소 제거      
      link4.removeLast();
      System.out.println("link4 print : " + link4);
      // link4의 2번째 요소를 50으로 설정한다.
      link4.set(2, 50);
      System.out.println("link4 print : " + link4);
      
//link4 print : [10, 20, 30, 40, 50, 60, 70, 80, 90]
//link4 print : [10, 20, 30, 40, 50, 60, 70, 80]
//link4 print : [10, 20, 50, 40, 50, 60, 70, 80]

수정 등

 

      link3.sort(null);
      System.out.println("link3 print : " + link3);
      // link4에 있는 요소와 link3과 중복되는 요소들만 출력한다. 중복제거
      link3.retainAll(link4);
      System.out.println("link4 print : " + link4);
      System.out.println("link3 print : " + link3);
      // 맨앞 요소에 20 삽입, push
      link4.push(20);
      System.out.println("link4 print : " + link4);
      
      //link3 print : [0, 0, 1, 2, 3, 4, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 1000]
      //link4 print : [10, 20, 50, 40, 50, 60, 70, 80]
      //link3 print : [10, 20, 40, 50, 60, 70, 80]
      //link4 print : [20, 10, 20, 50, 40, 50, 60, 70, 80]

 

 

아 귀찮아죽겠네

      // 맨 앞 요소 빼냄, pop
      link4.pop();
      System.out.println("link4 print : " + link4);
      // link3 의 요소들 출력
      System.out.println(link3.toString());
      System.out.println("link3 print : " + link3);
      // link3의 요수 중 2부터 4까지 추출해서 출력(즉, 0부터5까지 출력);
      System.out.println(link3.subList(0, 6));
      System.out.println("link3 print : " + link3);
      // link3의 첫 요소 가져옴
      System.out.println(link3.peek());
      System.out.println("link3 print : " + link3);
      
      
      
      //link4 print : [10, 20, 50, 40, 50, 60, 70, 80]
      //[10, 20, 40, 50, 60, 70, 80]
      //link3 print : [10, 20, 40, 50, 60, 70, 80]
      //[10, 20, 40, 50, 60, 70]
      //link3 print : [10, 20, 40, 50, 60, 70, 80]
      //10
      //link3 print : [10, 20, 40, 50, 60, 70, 80]

ㄹㅇ

      // link3의 첫 요소 가져옴, 리스트가 비어있으면 null 반환
      System.out.println(link3.peekFirst());
      System.out.println("link3 print : " + link3);
      // link3의 첫 요소를 가져 온 후 삭제함
      System.out.println(link3.poll());
      System.out.println("link3 print : " + link3);
      // link3의 첫 요소를 가져 온 후 삭제함, 리스트 비어있으면 null 반환
      System.out.println(link3.pollFirst());
      System.out.println("link3 print : " + link3);
      
      //10
      //link3 print : [10, 20, 40, 50, 60, 70, 80]
      //10
      //link3 print : [20, 40, 50, 60, 70, 80]
      //20
      //link3 print : [40, 50, 60, 70, 80]

나중에 고쳐야디

      // link3의 마지막 요소를 가져 온 후 삭제함, 리스트 비어있으면 null 반환
      System.out.println(link3.pollLast());
      System.out.println("link3 print : " + link3);
      // link3 맨 마지막에 요소 추가
      link3.offer(100);
      System.out.println("link3 print : " + link3);
      // link3 맨 마지막에 요소 추가
      link3.offerLast(500);
      System.out.println("link3 print : " + link3);
      // link3 맨 앞에 요소 추가
      link3.offerFirst(200);
      System.out.println("link3 print : " + link3);
      
      
      //80
      //link3 print : [40, 50, 60, 70]
      //link3 print : [40, 50, 60, 70, 100]
      //link3 print : [40, 50, 60, 70, 100, 500]
      //link3 print : [200, 40, 50, 60, 70, 100, 500]

 

 

도움을 주신 분 : 5조 초코딩과 그옆자리

사이트의 정보

코딩하렴

으렴

활동하기