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

Java Stack如何实现批量入栈pushAll和批量出栈popN方法

方法实现代码

你可以直接用下方代码替换类中待实现的两个空方法:

public void pushAll (Object all[]) throws StackFullException {
    // 入参非空校验(可选补充边界处理)
    if (all == null) {
        throw new IllegalArgumentException("入栈数组不能为null");
    }
    // 优先校验剩余空间是否足够
    int requiredSpace = all.length;
    int freeSpace = capacity - size();
    if (requiredSpace > freeSpace) {
        throw new StackFullException("栈剩余空间不足,无法完成批量入栈");
    }
    // 按数组顺序入栈,天然保证数组最后一个元素在栈顶
    for (Object item : all) {
        push(item);
    }
}

public Object [] popN (int n) throws StackEmptyException {
    // 入参合法性校验(可选补充边界处理)
    if (n < 0) {
        throw new IllegalArgumentException("弹出元素数量不能为负数");
    }
    // 优先校验栈内元素是否足够弹出
    int currentCount = size();
    if (n > currentCount) {
        throw new StackEmptyException("栈内元素不足,无法完成批量弹出");
    }
    Object[] result = new Object[n];
    // 逐个弹出元素存入结果数组
    for (int i = 0; i < n; i++) {
        result[i] = pop();
    }
    return result;
}

逻辑说明

  • pushAll方法提前做了空间校验,只要触发异常就不会执行任何入栈操作,不会出现部分元素入栈的问题;复用原有单元素push逻辑,不需要重复写指针移动、元素赋值的代码,保证逻辑一致性。
  • popN方法提前做了元素数量校验,只要触发异常就不会执行任何出栈操作;复用原有单元素pop逻辑,自动处理元素清空、指针回退的操作,返回数组的顺序和弹出顺序完全一致(数组第一个元素为原栈顶元素)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:36:04