Stack 특정 값 존재하는지 확인하는 방법
Stack은 제일 마지막에 들어온 데이터가 가장 먼저 나가는 LIFO(Last-In First-Out) 구조의 자료구조입니다.
Java의 컬렉션은 Stack 클래스를 제공하며, push() 메서드와 pop() 메서드를 사용하여 데이터를 추가하거나 제거할 수 있습니다.
Stack에 특정 값이 존재하는지 확인하는 방법을 알아보기 위해 해당 포스팅을 찾아오신 분들은 Stack 자료구조에 대한 이해도가 있다고 생각되어 Stack에 대해 자세하게 설명하지 않겠습니다.
이번 포스팅은 Stack에서 특정 값이 존재하는지 확인할 수 있는 몇 가지 방법을 소개합니다.
방법 1. Vector 클래스의 contains 메서드
첫 번째 방법으로 Vector 클래스의 contains() 메서드를 사용하여 Stack에 특정 값이 존재하는지 확인할 수 있습니다.
Java의 Stack은 Vector에서 파생된 클래스입니다. 따라서, Vector에서 제공하는 특정 메서드를 사용할 수 있습니다.
다음은 Stack 클래스에서 사용할 수 있는 Vector 클래스의 메서드 목록입니다.
[Java 1.7]
[Java 1.8]
contains() 메서드는 특정 값이 존재하면 true를 반환하고 그렇지 않으면 false를 반환합니다.
다음 예제는 contains() 메서드를 호출하여 특정 값이 존재하는지 확인합니다.
public static void main(String args[]) {
Stack<Integer> stack = new Stack<>();
stack.push(10);
stack.push(20);
stack.push(30);
stack.push(40);
System.out.println("20은 존재하는가? " + stack.contains(20));
System.out.println("50은 존재하는가? " + stack.contains(50));
System.out.println("100은 존재하는가? " + stack.contains(100));
}
[실행 결과]
20은 존재하는가? true
50은 존재하는가? false
100은 존재하는가? false
방법 2. Vector 클래스의 containsAll 메서드
Stack은 Vector 클래스의 containsAll() 메서드를 사용할 수 있습니다.
containsAll() 메서드에 특정 값을 컬렉션으로 전달합니다.
모든 요소가 존재하면 true를 반환하고 그렇지 않으면 false를 반환합니다.
다음 예제는 containsAll() 메서드를 호출하여 특정 값이 존재하는지 확인합니다.
public static void main(String args[]) {
Stack<Integer> stack = new Stack<>();
stack.push(10);
stack.push(20);
stack.push(30);
stack.push(40);
System.out.println("[10, 20, 30]은 존재하는가? " +
stack.containsAll(Arrays.asList(10, 20, 30)));
System.out.println("[10, 20, 100]은 존재하는가? " +
stack.containsAll(Arrays.asList(10, 20, 100)));
System.out.println("[100, 200, 300]은 존재하는가? " +
stack.containsAll(Arrays.asList(100, 200, 300)));
}
[실행 결과]
[10, 20, 30]은 존재하는가? true
[10, 20, 100]은 존재하는가? false
[100, 200, 300]은 존재하는가? false
방법 3. Stack 클래스의 search 메서드
마지막 방법으로 Stack 클래스에 정의된 search() 메서드를 사용하여 특정 값이 존재하는지 확인할 수 있습니다.
search() 메서드는 Stack에 값이 존재하면 순번을 반환하며, 존재하지 않으면 -1을 반환합니다.
여기서 주의할 점으로 순번과 인덱스는 다른 개념입니다.
search() 메서드는 인덱스를 반환하지 않습니다. lastIndexOf() 메서드를 사용하여 스택의 마지막 위치인 꼭대기(Top)에서 데이터를 검색하며, 특정 값이 꼭대기(Top)에 존재하면 1을 반환하고 한 층씩 내려갈수록 반환 결과는 +1 증가합니다.
스택에 동일한 값이 존재하는 경우 마지막 위치와 가장 가까운 값의 순번을 반환합니다.
다음 예제는 search() 메서드를 사용하여 특정 값 존재 여부를 확인합니다.
public static void main(String args[]) {
Stack<Integer> stack = new Stack<>();
stack.push(10);
stack.push(20);
stack.push(30);
stack.push(10);
stack.push(200);
stack.push(300);
System.out.println("10의 위치는? " + stack.search(10));
System.out.println("20의 위치는? " + stack.search(20));
System.out.println("300의 위치는? " + stack.search(300));
System.out.println("400의 위치는? " + stack.search(400));
}
[실행 결과]
10의 위치는? 3
20의 위치는? 5
300의 위치는? 1
400의 위치는? -1
'Java > 컬렉션' 카테고리의 다른 글
[Java]HashMap 초기화 방법 (0) | 2022.08.29 |
---|---|
[Java]ArrayList 값 변경 방법 (0) | 2022.08.29 |
[Java]HashMap 순회하는 방법 (0) | 2022.06.27 |
[Java]ArrayList 중복 제거 (0) | 2022.06.27 |
[Java]HashSet 정렬 (0) | 2022.06.27 |
댓글