You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中Stack存自定义pair类后,如何用peek()访问element属性?

如何访问Stack中自定义Pair类的element属性

你看到的Example$pair@4617c264是对象的默认toString()输出——Java中所有类默认继承Object类,而Object的toString()就是返回类名@哈希值的格式,所以直接打印Stack.peek()的结果才会显示这个内容。要访问element属性,有几种可行做法:

直接访问public属性

你的pair类里element是public修饰的,可以直接通过peek()获取对象后点出属性:

public static void main(String[] args) {
    Stack<pair> st= new Stack<pair>();
    pair p1 = new pair(100,2);
    st.push(p1);
    // 直接访问element属性
    System.out.println(st.peek().element); // 输出100
}

用getter方法(更规范的封装方式)

虽然public属性可以直接用,但Java开发更推荐把属性设为私有,通过getter方法访问,这样能保证封装性。修改你的pair类:

public static class pair{
    private int element; // 改为私有
    private int idx;
    public pair(int element, int idx){
        this.element = element;
        this.idx = idx;
    }
    // 添加element的getter方法
    public int getElement() {
        return this.element;
    }
    // 可选:添加idx的getter
    public int getIdx() {
        return this.idx;
    }
}

之后访问的时候用:

System.out.println(st.peek().getElement()); // 输出100

额外:让打印对象时显示属性内容

如果想直接打印peek()的结果就能看到element和idx的值,给pair类重写toString()方法:

public static class pair{
    int element;
    int idx;
    public pair(int element, int idx){
        this.element = element;
        this.idx = idx;
    }
    
    @Override
    public String toString() {
        return "pair{element=" + element + ", idx=" + idx + "}";
    }
}

这时执行System.out.println(st.peek());就会输出pair{element=100, idx=2},而不是对象地址。

内容的提问来源于stack exchange,提问作者CShekhar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 07:52:46