Linked List

Jemny·2023년 10월 20일
0

자료구조

목록 보기
5/6

Linked List 자료구조의 기본구조

Linked List는 ArrayList와 다르게 데이터가 연속된 공간에 저장되지 않고 각 데이터 마다 다음 데이터를 향한 주소값을 가진다.

각 데이터는 노드라 불리며 배열에서 자주 삽입, 삭제가 이루어지는 경우 용이하여 ArrayList보다 선호된다.
하지만 ArrayList보다 검색에 있어서는 느리다는 단점이 있다.

ex) key에 영어값이 저장되어있고 value에 한글값이 저장되어있는 해쉬맵이 있다고 가정하자.

  • key값으로 apple이 온다면 value값으로는 사과가 오는 형식으로 데이터가 저장되어있다.
  • 여기서 key 값으로 사용한 apple은 중복사용할 수 없지만, value값으로 사용한 사과는 다른 key값에서 중복으로 사용할 수 있다.
  • 다른 데이터에서 중복으로 key값을 apple로 선언 할 경우 새로운 데이터가 생성되는것이 아니라 기존의 key값이 apple이었던 데이터의 value값이 변경된다.

자바에서 Linked List를 선언하는 방법

import java.util.LinkedList;

LinkedList list = new LinkedList(); //타입 미설정 Object로 선언된다.

LinkedList<Student> members = new LinkedList<Student>(); //타입설정 Student객체만 사용가능
LinkedList<Integer> num = new LinkedList<Integer>(); //타입설정 int타입만 사용가능
LinkedList<Integer> num2 = new LinkedList<>(); //new에서 타입 파라미터 생략가능
LinkedList<Integer> list2 = new LinkedList<Integer>(Arrays.asList(1,2)); //생성시 값추가

Linked List에 새로운 값을 추가할 때

LinkedList<Integer> list = new LinkedList<Integer>();
	list.addFirst(1); //가장 앞에 데이터 추가
	list.addLast(2); //가장 뒤에 데이터 추가
	list.add(3); //데이터 추가
	list.add(1, 10); //index 1에 데이터 10 추가
    
	// 값을 변경 할 때
	list.set(1, "Hello"); // 1번 인덱스의 값을 "Hello"로 변경

Linked List에서 값을 제거할 때

LinkedList<Integer> list = new LinkedList<Integer>(Arrays.asList(1,2,3,4,5));

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

그밖에 Linked List에 관한 메소드

System.out.print(list.size()); // list의 사이즈를 출력한다.

System.out.print(list.get(i)); //  list의 i번째 인덱스를 출력한다.

System.out.print(list.contains("Hello")); // list에 "Hello" 값이 있는지 확인 후 true / false로 반환한다.
System.out.print(list.indexOf("Hello")); // list에 "Hello" 값에 해당하는 인덱스를 반환한다.(없으면 -1 반환)
profile
백엔드 개발자 지망생

0개의 댓글