Java의 ArrayList에서 마지막 요소 가져오기
-
size()
및get()
메서드를 사용하여 마지막 요소 가져오기 -
Java에서
ArrayList
를LinkedList
로 변환 -
Java에서
ArrayList
를ArrayDeque
로 변환 - 구아바 라이브러리 사용하기
- 요약
이 튜토리얼은 Java의 ArrayList
에서 마지막 요소를 가져오는 방법을 소개하고 주제를 이해하기 위한 몇 가지 예제 코드도 나열합니다.
ArrayList
는 정렬된 컬렉션에 유사한 데이터를 저장하는 데 사용할 수 있는 동적 배열입니다. Arrays와 ArrayList의 좋은 점은 저장된 인덱스를 알고 있다는 점을 감안할 때 저장된 모든 요소에 대한 임의 액세스를 허용한다는 것입니다. 그러나 인덱스를 모르는 경우 ArrayList의 마지막 요소에 어떻게 액세스할 수 있습니까? Python과 같은 일부 다른 언어는 역 인덱싱을 제공하므로 -1을 사용하여 마지막 요소에 액세스할 수 있습니다. 이 튜토리얼에서는 Java의 ArrayList에서 마지막 요소를 가져오는 방법을 배웁니다.
size()
및 get()
메서드를 사용하여 마지막 요소 가져오기
Java의 ArrayList
에는 ArrayList
에 있는 요소의 수를 찾는 데 사용할 수 있는 size()
메서드가 있습니다.
import java.util.ArrayList;
public class LastElement {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(5);
list.add(10);
list.add(15);
list.add(20);
list.add(25);
System.out.printf("The list contains %d elements", list.size());
}
}
출력:
The list contains 5 elements
ArrayList의 마지막 인덱스는 길이보다 하나 작을 것임을 알고 있습니다(0부터 시작하는 인덱싱을 따르기 때문에). 이 정보를 사용하여 마지막 요소를 가져올 수 있습니다. ArrayList의 get()
메서드를 사용하여 마지막 요소를 가져옵니다.
import java.util.ArrayList;
public class LastElement {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(5);
list.add(10);
list.add(15);
list.add(20);
list.add(25);
int lastIdx = list.size() - 1;
int lastElement = list.get(lastIdx);
System.out.println("The last index of list is: " + lastIdx);
System.out.print("The last element of list is: " + lastElement);
}
}
출력:
The last index of list is: 4The last element of list is: 25
동일한 논리를 반복해서 작성하지 않도록 제네릭 메서드를 작성해 보겠습니다.
import java.util.ArrayList;
public class LastElement {
public static <E> E getLastElement(ArrayList<E> list) {
int lastIdx = list.size() - 1;
E lastElement = list.get(lastIdx);
return lastElement;
}
public static void main(String[] args) {
ArrayList<Integer> list1 = new ArrayList<Integer>();
list1.add(5);
list1.add(10);
list1.add(15);
list1.add(20);
list1.add(25);
ArrayList<String> list2 = new ArrayList<String>();
list2.add("1");
list2.add("2");
list2.add("3");
System.out.println("The last element of list1 is: " + getLastElement(list1));
System.out.print("The last element of list2 is: " + getLastElement(list2));
}
}
출력:
The last element of list1 is: 25
The last element of list2 is: 3
빈 ArrayList에서 메서드를 실행하면 어떻게 될까요? 빈 목록에서 위의 코드를 실행하면 IndexOutOfBoundsException
이 발생합니다. 이것은 size()
메서드가 빈 ArrayList에 대해 0을 반환하고 여기서 1을 빼면 인덱스로 -1이 되기 때문에 발생합니다. 마이너스 지수는 없습니다. 다음 예제에서는 이 예외를 반환합니다.
import java.util.ArrayList;
public class LastElement {
public static <E> E getLastElement(ArrayList<E> list) {
int lastIdx = list.size() - 1;
E lastElement = list.get(lastIdx);
return lastElement;
}
public static void main(String[] args) {
ArrayList<Integer> list1 = new ArrayList<Integer>();
System.out.println("The last element of list1 is: " + getLastElement(list1));
}
}
size() 메서드를 실행하기 전에 몇 가지 조건을 확인합시다. isEmpty()
메서드를 사용하여 목록이 비어 있는지 확인합니다.
import java.util.ArrayList;
public class LastElement {
public static <E> E getLastElement(ArrayList<E> list) {
if ((list != null) && (list.isEmpty() == false)) {
int lastIdx = list.size() - 1;
E lastElement = list.get(lastIdx);
return lastElement;
} else
return null;
}
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
System.out.println("The last element of list is: " + getLastElement(list));
}
}
출력:
The last element of list is: null
Java에서 ArrayList
를 LinkedList
로 변환
ArrayList
와 마찬가지로 LinkedList
클래스는 List
인터페이스를 구현합니다. LinkedList
클래스에는 목록의 마지막 요소를 가져오는 데 사용할 수 있는 간단한 getLast()
메서드가 있습니다.
ArrayList
를 LinkedList
로 변환할 수 있다면 이 방법을 사용할 수 있습니다. 이 프로세스는 원래 ArrayList
를 수정하지 않습니다.
import java.util.ArrayList;
import java.util.LinkedList public class LastElement {
public static <E> E getLastElementUsingLinkedList(ArrayList<E> arrList) {
LinkedList<E> linkedList = new LinkedList<E>(arrList);
return linkedList.getLast();
}
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(5);
list.add(10);
list.add(15);
list.add(20);
list.add(25);
System.out.println("The last element of list is: " + getLastElementUsingLinkedList(list));
System.out.print("The array list is: " + list);
}
}
출력:
The last element of list is: 25
The array list is: [5, 10, 15, 20, 25]
위의 솔루션은 마지막 요소를 가져오는 우아한 방법이 아니며 권장하지 않습니다. 마지막 요소에 여러 번 액세스해야 하는 경우 ArrayList 대신 LinkedList(또는 다른 컬렉션)를 사용하는 것이 좋습니다.
Java에서 ArrayList
를 ArrayDeque
로 변환
데크는 양방향 큐입니다. ArrayDeque는 크기 조정이 가능한 배열 기능과 deque 데이터 구조를 결합합니다. LinkedList와 마찬가지로 ArrayDeque에는 데크의 마지막 요소를 보는 데 사용할 수 있는 편리한 getLast()
메서드도 있습니다. 이 메서드를 사용하려면 ArrayList를 ArrayDeque로 변환하기만 하면 됩니다.
import java.util.ArrayDeque;
import java.util.ArrayList;
public class LastElement {
public static <E> Object getLastElementUsingArrayDeque(ArrayList<E> arrList) {
ArrayDeque<E> deque = new ArrayDeque<E>(arrList);
return deque.getLast();
}
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(5);
list.add(10);
list.add(15);
list.add(20);
list.add(25);
System.out.println("The last element of list is: " + getLastElementUsingArrayDeque(list));
System.out.print("The array list is: " + list);
}
}
다시 말하지만, 이 방법은 그다지 우아하지 않으며 마지막 요소에 여러 번 액세스해야 하는 경우 ArrayList 대신 ArrayDeque를 사용하는 것이 좋습니다.
구아바 라이브러리 사용하기
Google Guava 라이브러리는 ArrayList에서 마지막 요소를 가져오는 쉬운 방법을 제공합니다. 이 라이브러리의 Iterables 클래스의 getLast()
메서드를 사용하여 마지막 요소를 가져옵니다. 다음 코드를 실행하기 전에 이 라이브러리를 다운로드하여 프로젝트에 추가해야 합니다.
import com.google.common.collect.Iterables;
import java.util.ArrayList;
public class LastElement {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(5);
list.add(10);
list.add(15);
list.add(20);
list.add(25);
Integer lastEle = Iterables.getLast(list);
System.out.print("The last element of the array list is: " + lastEle);
}
}
출력:
The last element of the array list is: 25
목록이 비어 있는 경우 표시할 getLast()
메서드에 기본값을 제공할 수도 있습니다. 이렇게 하면 Java에서 예외가 발생하지 않습니다.
import com.google.common.collect.Iterables;
import java.util.ArrayList;
public class LastElement {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
String lastEle = Iterables.getLast(list, "No Element Found"); // No Element Found is the
// default value
System.out.print("The last element of the array list is: " + lastEle);
}
}
출력:
The last element of the array list is: No Element Found
요약
ArrayList
는 제한된 크기의 일반 배열 문제를 제거하는 데 주로 사용되는 매우 일반적인 데이터 구조입니다. 많은 경우 목록의 마지막 인덱스를 모를 수 있으므로 목록에 저장된 마지막 요소를 찾을 수 없습니다.
size()
및 get()
메소드를 사용하여 이 요소를 볼 수 있습니다. Google Guava 라이브러리는 마지막 요소를 쉽게 가져올 수 있는 방법도 제공합니다.
마지막 요소에 자주 액세스해야 하는 경우 LinkedList
또는 ArrayDeque
와 같은 다른 컬렉션을 사용하는 것이 좋습니다. 이러한 컬렉션에는 필요한 메서드가 있기 때문입니다.