Java 从堆栈中获取最大整数值
我是JAVA新手,正在努力学习。如果我的问题是基本的且格式不正确,请提前道歉 我在试着理解如何在堆栈中获得最大int值,好吗Java 从堆栈中获取最大整数值,java,stack,Java,Stack,我是JAVA新手,正在努力学习。如果我的问题是基本的且格式不正确,请提前道歉 我在试着理解如何在堆栈中获得最大int值,好吗 private Stack<Integer> stack = new Stack<>(); stack.push(2456785434); stack.push(1); 您可以为此使用Collections类 Integer maxValue = Collections.max(stack) 您可以为此使用Collections类 Intege
private Stack<Integer> stack = new Stack<>();
stack.push(2456785434);
stack.push(1);
您可以为此使用Collections类
Integer maxValue = Collections.max(stack)
您可以为此使用Collections类
Integer maxValue = Collections.max(stack)
首先,
2456785434
超出了int
的范围,其值只能从-2147483648
到2147483647
您可以使用流
API从堆栈中查找最大值
import java.util.Comparator;
import java.util.Optional;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
stack.push(245678544);
stack.push(1);
Optional<Integer> max = stack.stream().max(Comparator.naturalOrder());
System.out.println(max.get());
}
}
首先,
2456785434
超出了int
的范围,其值只能从-2147483648
到2147483647
您可以使用流
API从堆栈中查找最大值
import java.util.Comparator;
import java.util.Optional;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
stack.push(245678544);
stack.push(1);
Optional<Integer> max = stack.stream().max(Comparator.naturalOrder());
System.out.println(max.get());
}
}
我想保留这个堆栈。你好像在从一些非常古老的材料学习Java?
堆栈
类是遗留类,不再使用。我会使用ArrayList
或ArrayDeque
<代码>堆栈有效,如果您坚持,您可以使用它。您的搜索结果是什么?我相信类似的问题已经被问过很多次了,也被回答过很多次了。我想保留这个堆栈。你似乎在从一些非常古老的材料中学习Java?堆栈
类是遗留类,不再使用。我会使用ArrayList
或ArrayDeque
<代码>堆栈有效,如果您坚持,您可以使用它。您的搜索结果是什么?我确信类似的问题已经被问过并回答过很多次了。很抱歉,不需要存储在变量中,即int。只想返回堆栈中的最大值。@AM_86-当您从某个方法返回值时,它必须被收集到某个变量中,这就是为什么您需要声明返回类型的原因。如果您已经知道您的数字可能超出int
的范围,您可以根据需要选择更大的类型,如long
(即Stack
)或更大的biginger
。如果有任何疑问/问题,请随时发表评论。@AM_86我不太清楚,抱歉。您是说要编写一个方法,该方法将堆栈
作为参数,并返回堆栈
中的最大值?如果是的话,堆栈
会被允许为空吗?如果是的话,在这种情况下会发生什么?您是正确的,要从方法返回最大值,您不需要先将其存储在变量中。@OleV.V.-我没有说过必须显式声明一个变量来收集返回值。我说过它必须被收集到某个变量中(可能是JVM提供的隐式变量),这就是为什么需要声明返回类型。这不是一个正确的说法吗?@OleV.V.是的,你的假设是正确的。如果总和超过2147483647,则返回2147483647。我将修改我的问题并提供我的方法。我希望这有帮助,您可以解释一个可能的解决方案。很抱歉,不需要存储在变量中,即int。只想返回堆栈中的最大值。@AM_86-当您从某个方法返回值时,必须将其收集到某个变量中,这就是为什么您需要声明返回类型的原因。如果您已经知道您的数字可能超出int
的范围,您可以根据需要选择更大的类型,如long
(即Stack
)或更大的biginger
。如果有任何疑问/问题,请随时发表评论。@AM_86我不太清楚,抱歉。您是说要编写一个方法,该方法将堆栈
作为参数,并返回堆栈
中的最大值?如果是的话,堆栈
会被允许为空吗?如果是的话,在这种情况下会发生什么?您是正确的,要从方法返回最大值,您不需要先将其存储在变量中。@OleV.V.-我没有说过必须显式声明一个变量来收集返回值。我说过它必须被收集到某个变量中(可能是JVM提供的隐式变量),这就是为什么需要声明返回类型。这不是一个正确的说法吗?@OleV.V.是的,你的假设是正确的。如果总和超过2147483647,则返回2147483647。我将修改我的问题并提供我的方法。我希望这有帮助,你可以解释一个可能的解决方案。约阿基姆·丹尼尔森——我同意你的看法。IMHO,把一个问题标记为重复问题是可以的,但真正的努力不应该被贬低。为什么要投否决票?只是猜测:因为有人认为我们不应该(再次)回答这样一个研究不足的问题?因为从另一个答案下的讨论中,我们怀疑OP是否真的总是想要整个堆栈中的max元素?如果这确实是我想要的,你的方式就是我喜欢的方式。@JoakimDanielson投票否决它的不是我。Joakim Danielson-我同意你的看法。IMHO,把一个问题标记为重复问题是可以的,但真正的努力不应该被贬低。为什么要投否决票?只是猜测:因为有人认为我们不应该(再次)回答这样一个研究不足的问题?因为从另一个答案下的讨论中,我们怀疑OP是否真的总是想要整个堆栈中的max元素?如果这确实是我想要的,你的方式就是我喜欢的方式。@JoakimDanielson投票否决它的不是我。