Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java를 활용해 LinkedList의 첫 번째와 마지막 위치에 요소 추가하는 방법

이 글에서는 연결 리스트(LinkedList)의 첫 번째 위치마지막 위치에 요소를 추가하는 방법을 알아보겠습니다.

자바의 java.util.LinkedList 클래스는 이중 연결 리스트(doubly-linked list)에서 기대할 수 있는 표준적인 연산들을 제공합니다. 인덱스를 사용하는 연산을 수행할 때는 지정된 인덱스에 더 가까운 쪽, 즉 리스트의 시작 또는 끝 중 가까운 곳부터 순회하여 효율적으로 동작합니다.

요소를 추가할 때는 내장 메서드인 addFirst()addLast()를 사용하면 됩니다.

예시 입출력

입력값:

입력 리스트: [Java, Scalaa, C++]

기대 출력값:

요소 추가 후 리스트: [JVA, Java, Scalaa, C++, Spark]

알고리즘

Step 1 - 시작한다.
Step 2 - LinkedList 객체 input_list를 선언한다.
Step 3 - 값을 정의한다.
Step 4 - 내장 함수 addFirst()와 addLast()를 사용하여 각각 첫 번째와 마지막 위치에 요소를 추가한다.
Step 5 - 결과를 출력한다.
Step 6 - 종료한다.

예제 1: main 메서드에서 모든 연산 처리하기

아래 예제는 모든 연산을 하나의 main 메서드 안에서 함께 수행하는 방식입니다.

import java.util.*;
public class Demo {
   public static void main(String args[]){
      LinkedList<String> input_list = new LinkedList<String>();
      input_list.add("Java");
      input_list.add("Scalaa");
      input_list.add("C++");
      System.out.println("정의된 리스트: " + input_list);
      input_list.addFirst("JVA");
      input_list.addLast("Spark");
      System.out.println("요소 추가 후 리스트: " + input_list);
   }
}

출력 결과

정의된 리스트: [Java, Scalaa, C++]
요소 추가 후 리스트: [JVA, Java, Scalaa, C++, Spark]

예제 2: 객체 지향 방식으로 함수 분리하기

다음 예제는 연산 로직을 별도의 함수로 캡슐화하여 객체 지향 프로그래밍(OOP) 스타일로 구현한 것입니다. 이렇게 하면 코드의 재사용성과 가독성이 향상됩니다.

import java.util.*;
public class Demo {
   static void add_elements(LinkedList<String> input_list){
      input_list.addFirst("JVA");
      input_list.addLast("Spark");
      System.out.println("요소 추가 후 리스트: " + input_list);
   }
   public static void main(String args[]){
      LinkedList<String> input_list = new LinkedList<String>();
      input_list.add("Java");
      input_list.add("Scalaa");
      input_list.add("C++");
      System.out.println("정의된 리스트: " + input_list);
      add_elements(input_list);
   }
}

출력 결과

정의된 리스트: [Java, Scalaa, C++]
요소 추가 후 리스트: [JVA, Java, Scalaa, C++, Spark]

핵심 정리

  • addFirst(E e): 리스트의 맨 앞에 요소를 추가합니다.
  • addLast(E e): 리스트의 맨 뒤에 요소를 추가합니다.
  • 두 메서드 모두 시간 복잡도가 O(1)이므로 매우 빠르게 동작합니다.