我正在寻找一种方法来更改Java堆栈中元素的顺序,以便偶数在奇数下。
例如:5, 2, 6, 7, 1, 4, 3 它变成这个5, 7, 1, 3, 2, 6, 4。
以下是我目前的代码,我被困在寻找如何改变订单:
public static void main(String[] args) {
Stack<Integer> p = new Stack<>();
p.push(3);
p.push(4);
p.push(1);
p.push(7);
p.push(6);
p.push(2);
p.push(5);
ListIterator<Integer> ListIterator = p.listIterator(p.size());
while (ListIterator.hasPrevious())
{
Integer i = ListIterator.previous();
System.out.println(i);
}
}
谢谢你的帮助!
有很多方法可以完成你的任务。
我怀疑这个挑战的目的是熟悉堆栈数据结构及其基本操作。这是一个有两个加法堆栈的解决方案。
Stack<Integer> numbers = new Stack<>();
numbers.push(3);
numbers.push(4);
numbers.push(1);
numbers.push(7);
numbers.push(6);
numbers.push(2);
numbers.push(5);
Stack<Integer> odd = new Stack<>();
Stack<Integer> even = new Stack<>();
while (!numbers.isEmpty()) {
Integer next = numbers.pop();
if (next % 2 == 0) even.push(next);
else odd.push(next);
}
numbers.addAll(odd);
numbers.addAll(even);
System.out.println(numbers);
输出:
[5, 7, 1, 3, 2, 6, 4]
Stack
是AbstractList
的子类,因此您可以通过提供自定义比较器来使用List.sort()。
public class Temp {
public static void main(String[] args) {
Stack<Integer> p = new Stack<>();
p.push(3);
p.push(4);
p.push(1);
p.push(7);
p.push(6);
p.push(2);
p.push(5);
p.sort((a, b) -> {
if (a % 2 == 0 && b % 2 == 0) {
return 0;
}
if (a % 2 == 0) {
return 1;
}
if (b % 2 == 0) {
return -1;
}
return 0;
});
System.out.println(p);
}
}
对于-[3,4,1,7,6,2,5]
的初始堆栈,这会导致-[3,1,7,5,4,6,2]
。
我来自C/C++背景,在这里一个进程内存分为: null 我想把我的注意力集中在这一点上,当我阅读JVM中的堆和堆栈时,我们是在谈论堆栈和堆的概念吗?并且整个JVM的实际内存驻留在堆上(这里指的是堆的C++概念)?
谁能给我举个例子吗, 如果您想在自己的代码中使用堆栈类,则需要在创建时完全指定包或更改类的名称;否则,您可能会与java.util.package中的堆栈发生冲突 它来自于“用java思考”……我尝试了一个与java冲突的例子。具有自己的堆栈类的util堆栈类。一切都很好。谁能给我举个碰撞的例子吗。
在这个程序中,我必须打开一个文件并将其打印到文本区域,然后确保所有括号、括号等匹配。如果括号匹配,我将在另一个文本区域中打印出来。我的问题如下:我是从文件中读取还是从第一个文本区域读取?我是在Actionlistener还是在构造函数中创建堆栈?
问题内容: 在使用以下方式部署此撰写文件的堆栈时: 生成的服务名称将为 myapp_service-name 我希望它由 my-custom-service-name 命名和引用 __ 问题答案: 对于服务之间的通信,如果两个服务都在同一网络中,则可以使用在撰写文件中定义的serviceName(在您的情况下,您的服务名称为service-name)。 完成后,堆栈名称将显示在每个服务之前。这样做
问题内容: 我对Java不太了解。 我浏览了几个链接,发现博客上写着“ Java Primitives存储在堆栈上”,我觉得这取决于实例变量或局部变量。 经过几个链接后,我的结论是, 类变量(基元)作为对象包含的对象的一部分存储在堆中。 类变量– object(用户定义)–作为其包含的Object的一部分存储在堆中。对于参考对象和实际对象都是如此。 方法变量-基元-作为该堆栈框架的一部分存储在堆栈
问题内容: 有谁知道是否有一种方法可以动态地(运行时)增加主线程的堆栈大小?另外,我相信这是同样的问题,是否可以在实例化之后增加/更新a的堆栈大小? 的CTOR允许定义其堆栈大小,但是我找不到任何更新方法。实际上,我没有在JDK中找到对堆栈大小的任何管理(这往往表明这是不可能的),一切都在VM中完成。 根据Java语言规范,可以在“创建堆栈时”设置堆栈大小,但需要注意以下几点: Java虚拟机实现