📜  Java中的堆栈hashCode()方法与示例(1)

📅  最后修改于: 2023-12-03 14:42:56.510000             🧑  作者: Mango

Java中的堆栈hashCode()方法与示例

在 Java 中,堆栈是一种后进先出的数据结构。它提供了两种基本操作:压入(push)、弹出(pop)。hashCode() 方法是 Java 中的一个常用方法,它返回对象的哈希值。本文将介绍 Java 中的堆栈 hashCode() 方法及其示例。

堆栈 hashCode() 方法

堆栈 hashCode() 方法是一个与 equals() 方法相似的方法。它用于返回堆栈的哈希值。当你要使用堆栈作为 HashMap 或 HashSet 的键值时,你需要重载该方法。

hashCode() 方法的语法如下:

public int hashCode()
堆栈 hashCode() 方法示例

下面给出一个简单的代码示例,该代码实现了一个堆栈,其中包含了 hashCode() 和 equals() 方法的重载实现。

import java.util.ArrayList;
import java.util.List;

public class Stack {
    private List<Integer> data;

    public Stack() {
        data = new ArrayList<>();
    }

    public void push(int x) {
        data.add(x);
    }

    public int pop() {
        if (isEmpty()) {
            throw new RuntimeException("Stack is empty");
        }

        return data.remove(data.size() -1);
    }

    public int top() {
        if (isEmpty()) {
            throw new RuntimeException("Stack is empty");
        }

        return data.get(data.size() -1);
    }

    public boolean isEmpty() {
        return data.isEmpty();
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }

        if (o == null || this.getClass() != o.getClass()) {
            return false;
        }

        Stack other = (Stack) o;

        return this.data.equals(other.data);
    }

    @Override
    public int hashCode() {
        return data.hashCode();
    }

    public static void main(String[] args) {
        Stack stack = new Stack();

        stack.push(1);
        stack.push(2);
        stack.push(3);

        System.out.println(stack.hashCode());
    }
}

在上述代码中,我们重载了 equals() 和 hashCode() 方法。在 main() 方法中,我们创建了一个堆栈对象,并向其中压入了三个整数。最后,我们使用 hashCode() 方法输出堆栈的哈希值。