본문 바로가기
코딩일기/Java

[Java] LinkedList 란?

by 욱파이어니어 2021. 6. 18.
728x90
반응형

LikedList란?

 

LinkedList는 아래 사진처럼 각각의 노드가 그림처럼 연결되어 있는 형태로 저장이 되는 방식이다.

그래래서 각각의 노드들은 자기와 연결되어 있는 노드들에 대한 정보만 가지고 있지 전체적인 노드들에 대한 정보를 

가지고 있지 않은 형태를 가지고 있다.

 

위의 그림처럼 서로 다음 노드를 가르키고 있기때문에 값을 추가할땐 새롭게 또 다른곳을 가르키게해 

값을 추가할때 용이하고 삭제할때도 마찬가지로 link되어 있는것을 자르기만 하면 되기때문에 삭제에도

매우 용이하다.

 

하지만 위에서 말했듯이 LinkedList는 다음 노드에 대한 정보만을 가지고 있기 때문에 특정 노드를 검색하기 위해선 모든 경로를 순회해야 된다. 따라서 LinkedList로 검색을 하게 되면 성능 저하를 일으키기 때문에 검색을 할일이 있을땐 

ArrayList 클래스를 사용해야 한다.

 

https://wpioneer.tistory.com/126

 

[Java] ArrayList 란?

우리는 배열을 선언하게 된다면 항상 그 배열의 크기를 설정해주어야만 한다. 그래서 값을 넣을때 배열의 크기만큼 값을 넣어주지 못하게된다면 배열의 크기를 매번 수정해줘야 한다. 그리고

wpioneer.tistory.com

 

 

LinkedList 사용법

 

LinkedList 선언은 ArrayList 선언하는것과 방식이 유사하다. 

	LinkedList num1 = new LinkedList();
	LinkedList<Integer> num2 = new LinkedList<Integer>(); //제내릭을 Integer로 형성

(<>안에 들어가는것은 LinkedList에 들어갈 자료형으로써 해당 자료형만 LinkedList에 추가할수있다는뜻이다.)

 

 

 

 

LinkedList 값 추가

		LinkedList<Integer> num2 = new LinkedList<Integer>(); //제내릭을 Integer로 형성
		
		num2.addFirst(1); //처음에 값을 넣는것
		num2.addLast(2); //마지막에 값을 넣는것
		num2.add(3); //값 추가
		num2.add(1,10); //1뒤에 10이라는 값 추가

※LinkedList에는 위처럼 숫자도 넣을수 있지만 클래스도 추가 할수 있다.

대신에 제네릭 부분에 해당하는 클래스를 적어줘야 한다.

 

 

 

LinkedList 값 삭제

		num2.removeFirst(); //가장 앞의 데이터 제거
		num2.removeLast(); //가장 뒤의 데이터 제거
		num2.remove(); //생략시 0번째 index제거
		num2.remove(1); //index 1 제거
		num2.clear(); //모든 값 제거

위와 같이 메소드를 사용하면 list에 있는 값들을 제거할수가 있다.

List에서 제거는 ArrayList에서의 제거 방식과는 다르게 아래와 같은 방식으로 통해서 제거가 이루어진다.

LinkedList 크기 

System.out.println(num2.size());

list.size()를 하면 해당 list의 크기가 return 된다.

 

 

 

LinkedList 출력

 

		System.out.println(num2); //list 전체 출력
		for(Integer i : num2) { //for each 구문으로 num2에 있는 값들을 하나하나 출력
			System.out.print(i + " ");
		}
		System.out.println();
		
		Iterator it = num2.iterator(); //Iterator를 통해서 list를 iterator로 줄을 세워서 줄을 뽑아 쫙 출력
		while(it.hasNext()) {
			System.out.print(it.next()+" ");
		}
		

 

 

LinkedList 값 검색

LinkedList에 어떤 값을 찾을때는 아래와 같은 방식을 사용하면 된다.

num2.contains(1) //1을 포함하고 있으면 true 반환 없으면 false 반환
num2.indexOf(1) //1의 index를 반환 대신 없으면 -1 반환

 

 

참조 블로그 : https://coding-factory.tistory.com/552?category=758267

반응형

'코딩일기 > Java' 카테고리의 다른 글

BufferedReader와 BufferedWriter  (0) 2021.07.22
[Java] ArrayList 란?  (0) 2021.06.18
[Java] 2차원 배열 출력 방법  (0) 2021.06.14
[Java] 2차원 배열 정렬 방법  (0) 2021.06.14
[Java] Stack 클래스 사용방법  (0) 2021.06.11