Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

자바 스택 클래스

Java 스택은 후입선출 데이터 구조입니다. 스택에서 제거된 첫 번째 항목은 스택에 마지막으로 추가된 항목입니다. 스택 데이터 구조는 스택 끝에 새 항목을 추가합니다. Java 스택은 Vector 클래스를 확장합니다.

프로그래밍에서 스택은 데이터를 저장하는 데 사용되는 후입선출 데이터 구조입니다. 스택은 다양한 경우에 유용합니다. 예를 들어 목록에서 대칭을 테스트하거나 목록의 순서를 반대로 하려면 스택을 사용할 수 있습니다.

Java 컬렉션 프레임워크에는 stack이라는 클래스가 포함되어 있습니다. Java에서 스택을 빌드하는 데 사용됩니다. 이 튜토리얼에서는 Java 스택의 기본, 스택 생성 방법 및 스택 클래스가 제공하는 주요 메소드에 대해 설명합니다. 스택 클래스의 작동 방식을 강화하기 위해 전체 예제를 참조합니다.

자바 스택

Java 스택은 LIFO(후입 선출) 구조로 요소를 저장합니다. 이것은 스택의 맨 위에 추가된 요소가 스택에서 가장 먼저 제거된다는 것을 의미합니다.

프로그래밍 스택의 한 예는 웹 브라우저의 페이지 제어 기능입니다. 웹 페이지를 방문하면 웹 브라우저가 방문 페이지 기록에 해당 페이지를 추가합니다. 이 레코드는 스택입니다.

탐색 세션 동안 새 웹 페이지를 방문할 때마다 브라우저는 탐색 스택에 새 항목을 추가합니다. 마지막으로 방문한 페이지(마지막 페이지 ), 브라우저는 스택에서 가장 최근 항목을 먼저 제거합니다(선출 ). 다음은 스택의 예를 보여주는 표입니다.

사이트 이름
google.com
nytimes.com
careerkarma.com

이것은 우리의 검색 기록 스택입니다. 현재 google.com 메인 페이지에 있습니다. google.com 페이지 이전에는 New York Times에 있었습니다. 메인 페이지. 그 전에는 Career Karma 메인 페이지에 있었습니다.

google.com 스택의 맨 위에 있습니다. google.com 사이트는 브라우저가 스택에서 제거하는 첫 번째 항목이 됩니다. 이것은 우리가 마지막으로 방문한 페이지로 돌아가기 위해 뒤로 화살표 버튼을 누를 때 발생합니다.

참가자의 81%는 부트캠프에 참석한 후 기술 직업 전망에 대해 더 자신감을 느꼈다고 말했습니다. 지금 부트캠프에 참여하십시오.

부트캠프 졸업생은 부트캠프 시작부터 첫 직장을 찾는 데까지 6개월도 채 걸리지 않았습니다.

작동 중인 스택의 또 다른 예는 책 더미입니다. (스택을 생각해 보세요. of books!) 많은 책을 훑어보고 싶다면 책의 맨 위에서 아래로 이동합니다. 스택에 마지막으로 추가한 책이 가장 먼저 보게 되는 책, 즉 LIFO가 됩니다.

스택으로 작업할 때 목록의 마지막 항목은 스택의 맨 위에 있는 것으로 간주됩니다. . 위의 웹사이트 예를 사용하려면 google.com이 가장 최근에 방문한 사이트이므로 스택의 맨 위에 있습니다.

자바 스택 생성

Java에서 스택을 생성하기 전에 java.util.Stack 패키지를 가져와야 합니다. 이 패키지는 이 튜토리얼에서 사용할 스택 데이터 구조를 저장합니다.

스택 데이터 구조를 가져오는 방법은 다음과 같습니다.

import java.util.Stack;

스택 패키지를 가져왔으므로 이제 Java 스택을 만들 수 있습니다. 다음은 Java에서 스택을 생성하는 데 사용한 구문입니다.

Stack<DataType> stack_name = new Stack<>();

다음은 Java 스택 구문의 주요 구성 요소입니다.

  • 스택 스택을 선언하고 싶다고 프로그램에 알립니다.
  • 데이터 유형 스택이 저장할 데이터 유형입니다.
  • 스택 이름 스택의 이름입니다.
  • 새 스택<>(); 새 자바 스택을 초기화합니다.

books라는 스택을 만들고 싶다면 문자열을 저장하는 경우 다음 코드를 사용할 수 있습니다.

Stack<String> books = new Stack<>();

새로운 스택을 만들었습니다. 이 스택은 데이터를 후입선출 순서로 저장합니다.

Deque 클래스에 대한 참고 사항

일부 프로그래머는 Java에서 스택 대신 deque 클래스를 사용하는 것을 선호합니다.

데크는 양방향 큐입니다. 스택에 비해 데크의 장점은 데크의 양쪽 끝에서 항목을 추가하고 제거할 수 있다는 것입니다. 스택으로는 이 작업을 수행할 수 없습니다.

스택 관련 메서드(아래에서 설명)를 사용하는 경우 코드에서 스택 클래스를 사용하도록 커밋해야 합니다. 이로 인해 프로그램을 확장하기가 더 어려워질 수 있습니다. 그렇긴 하지만 스택은 Java에서 여전히 다양한 용도로 사용됩니다.

자바 스택 메소드

Java 스택 클래스에는 스택 내에 저장된 데이터를 조작하는 데 사용할 수 있는 여러 메서드가 포함되어 있습니다. 이러한 방법은 다음 두 가지 범주로 나눌 수 있습니다.

  1. 벡터 클래스에서 상속된 스택 메서드. 스택이 제공하는 첫 번째 메서드는 벡터 클래스에서 상속된 메서드입니다. 이러한 방법에 대해 자세히 알아보려면 "Java 벡터 클래스"를 검색하십시오.
  1. 스택에 고유한 스택 방법. Stack은 또한 클래스에 고유한 5가지 추가 메서드를 제공합니다. 아래에서 논의하겠습니다. 그들은:
  • 푸시()
  • 팝()
  • 피킹()
  • 빈()
  • 검색()

push() 및 pop() 작업은 틀림없이 가장 일반적으로 사용됩니다. 스택에서 항목을 각각 추가 및 제거할 수 있습니다.

자바 스택에 항목 추가:push()

푸시() 메소드는 Java 스택에 항목을 추가합니다.

푸시() 스택에 추가하려는 항목이라는 하나의 매개변수를 허용합니다. 예를 들어, 도서관의 소설 섹션에 모든 책 제목을 저장하는 스택을 생성한다고 가정합니다. 이 코드를 사용하여 처음 세 책 제목을 스택에 추가할 수 있습니다.

import java.util.Stack;

class AddBooks {
	public static void main(String[] args) {
		Stack<String> books = new Stack<>();

		books.push("Pride and Prejudice");
		books.push("Nineteen Eighty-Four");
		books.push("The Great Gatsby");

		System.out.println(books);
	}
}

코드 반환:

[Pride and Prejudice, Nineteen Eighty-Four, The Great Gatsby]

먼저 Java 스택 모듈을 가져옵니다. 그런 다음 AddBooks라는 클래스를 선언합니다. —우리 프로그램의 코드를 저장합니다.

다음 줄에서는 books라고 하는 새 스택을 초기화합니다. - 문자열 값을 저장할 수 있습니다. 그런 다음 push()를 사용합니다. 스택에 세 가지 책 제목을 추가하는 방법:오만과 편견 , 1984 , 및 위대한 개츠비 . 마지막으로 에 있는 책 제목을 인쇄합니다. 콘솔에 스택합니다.

자바 스택에서 항목 제거:pop()

pop() 메서드는 스택의 맨 위에서 요소를 제거합니다. 이 메서드는 스택에서 제거한 요소를 반환합니다.

스택에서 위대한 개츠비 항목을 제거하고 싶다고 가정해 보겠습니다. , 이것은 우리가 입력한 마지막 책 제목이었습니다. 이 작업을 수행하기 위해 위의 프로그램에 다음 코드를 추가할 수 있습니다.

class RemoveBooks {
	public static void main(String[] args) {
		Stack<String> books = new Stack<>();

		books.push("Pride and Prejudice");
		books.push("Nineteen Eighty-Four");
		books.push("The Great Gatsby");

		String removed_book = books.pop();
		System.out.println("Books: " + books);
		System.out.println("Removed book: " + removed_book);
	}
}

코드 반환:

Books: [Pride and Prejudice, Nineteen Eighty-Four]
Removed book: The Great Gatsby

이 예에서 코드는 스택 맨 위에 있는 항목을 제거합니다.

스택 맨 위에 있는 항목은 위대한 개츠비입니다. 그런 다음 우리 프로그램은 Books: 앞에 수정된 책 목록을 인쇄합니다. 콘솔에. 삭제된 도서:가 앞에 오는 삭제된 도서의 제목 콘솔에도 표시됩니다.

스택에서 첫 번째 개체 검색:peek()

스택으로 작업할 때 스택 맨 위에 있는 항목을 검색할 수 있습니다. 바로 peek() 메소드가 들어옵니다. peek() 매개변수를 허용하지 않습니다. 엿보기 스택의 맨 위에 있고 찾은 항목을 반환합니다.

위대한 개츠비를 제거했으므로 스택의 맨 위에 있는 항목을 찾으려고 한다고 가정해 보겠습니다. . 이를 위해 다음 코드를 사용할 수 있습니다.

import java.util.Stack;

class FindTopBook {
	public static void main(String[] args) {
		Stack<String> books = new Stack<>();

		books.push("Pride and Prejudice");
		books.push("Nineteen Eighty-Four");

		String top_book = books.peek();

		System.out.println("Book at top of stack: " + top_book);
	}
}

코드 반환:

Book at top of stack: Nineteen Eighty-Four.

스택에는 두 개의 항목이 있습니다. 1984 스택의 맨 위에 있으므로 peek()을 사용할 때 메서드를 사용하면 프로그램에서 해당 책 제목을 반환합니다.

스택이 비어 있는지 확인:empty()

빈() 메서드는 스택이 비어 있는지 여부를 결정합니다.

예를 들어 이 스택이 비어 있습니다. 우리는 스택에 있는 데이터를 가지고 놀았습니다. 이제 스택에 더 이상 책 제목이 포함되어 있는지 확실하지 않습니다.

다음 코드를 사용하여 스택이 비어 있는지 확인할 수 있습니다.

import java.util.Stack;

class CheckBooksEmpty {
	public static void main(String[] args) {
		Stack<String> books = new Stack<>();

		books.push("Pride and Prejudice");
		books.push("Nineteen Eighty-Four");

		String is_empty = books.empty();

		System.out.println("Is the book stack empty? " + is_empty);
	}
}

코드 반환:

Is the book stack empty? false

스택에는 두 개의 값이 포함되어 있으므로 비어 있지 않습니다. 따라서 books.empty() 반환:거짓.

요소 검색:search()

검색() 메소드는 스택에서 요소를 검색합니다.

검색() 검색하려는 항목의 이름인 하나의 매개변수를 허용합니다. 스택에서 해당 항목의 위치를 ​​반환합니다.

오만과 편견의 위치를 ​​알고 싶다고 가정해 보겠습니다. 책 제목 스택에 있습니다. 다음 코드를 사용하여 그렇게 할 수 있습니다.

import java.util.Stack;

class FindPrideBookPosition {
	public static void main(String[] args) {
		Stack<String> books = new Stack<>();

		books.push("Pride and Prejudice");
		books.push("Nineteen Eighty-Four");

		String find_book = books.search("Pride and Prejudice");

		System.out.println("Position of 'Pride and Prejudice': " + find_book);
	}
}

코드 반환:

Position of 'Pride and Prejudice': 1. 

스택의 첫 번째 항목은 위치 번호가 1입니다. ,. 오만과 편견 때문에 스택의 첫 번째 항목인 경우 프로그램은 1을 반환합니다.

결론

Java 스택 클래스는 LIFO 구조로 스택을 생성하는 데 사용됩니다. 이 튜토리얼에서는 Java 스택의 기본 사항과 스택을 생성하는 방법에 대해 설명했습니다. 또한 스택의 내용을 검색하고 조작하는 데 사용되는 5가지 방법에 대해서도 이야기했습니다.

이제 전문 Java 개발자처럼 스택 작업에 ​​필요한 지식을 갖추었습니다. Java 학습 방법 가이드를 읽으면 Java 프로그래밍 언어에 대해 자세히 알아볼 수 있습니다.