用java创建堆栈
我需要使用stack来创建一个存储对象的列表,并尝试在中查找,但是,我不知道应该使用哪种语法 这是我的密码:用java创建堆栈,java,vector,stack,Java,Vector,Stack,我需要使用stack来创建一个存储对象的列表,并尝试在中查找,但是,我不知道应该使用哪种语法 这是我的密码: public class Rock { public String name; public Rock(String name){ this.name=name; } } public class RockTest{ public static void main(String[] args){ Rock r1 = new Rock("eluanshi")
public class Rock {
public String name;
public Rock(String name){
this.name=name;
}
}
public class RockTest{
public static void main(String[] args){
Rock r1 = new Rock("eluanshi");
Rock r2 = new Rock("jingangshi");
Rock r3 = new Rock("dalishi");
Stack(r1,r2,r3); // this is obviously wrong but how can i deal with it
}
}
堆栈是泛型类型,它只有一个没有参数的构造函数。您需要将数据推送到堆栈上:
Stack<Rock> stack = new Stack<Rock>();//use new Stack<>() in Java 7 (diamond inference)
stack.push(r1);
stack.push(r2);
stack.push(r3);
当然,这样做的缺点是,您无法在编译时确定将从堆栈中弹出的元素的类型
可以使用Stack.iterator方法在堆栈上迭代:
在Java 7之后的现代版本中,您可以使用foreach构造:
Stack<Rock> stack = new Stack<Rock>();
stack.push(r1);
stack.push(r2);
stack.push(r3);
for(Rock r : stack) {
//do something with the current rock
}
请注意,堆栈的迭代器自上而下工作。所以r3将首先被迭代。堆栈是一种泛型类型,它只有一个没有参数的构造函数。您需要将数据推送到堆栈上:
Stack<Rock> stack = new Stack<Rock>();//use new Stack<>() in Java 7 (diamond inference)
stack.push(r1);
stack.push(r2);
stack.push(r3);
当然,这样做的缺点是,您无法在编译时确定将从堆栈中弹出的元素的类型
可以使用Stack.iterator方法在堆栈上迭代:
在Java 7之后的现代版本中,您可以使用foreach构造:
Stack<Rock> stack = new Stack<Rock>();
stack.push(r1);
stack.push(r2);
stack.push(r3);
for(Rock r : stack) {
//do something with the current rock
}
请注意,堆栈的迭代器自上而下工作。因此,r3将首先被迭代。我需要使用堆栈创建一个存储对象的列表。您需要堆栈还是列表?。选择一种。不要跳入一种语言做随机的事情。遵循教程,了解你在做什么。这是java,不是C++。请遵循教程。您可以从.if using stack开始,然后实例化新堆栈并使用方法stack.pushObject,如果使用List,则实例化ArrayList并使用List。addObject@CommuSoft当然可以,但这是Java,不是另一种编程语言:。我需要使用堆栈创建一个存储对象的列表。您需要堆栈还是列表?。选择一种。不要跳入一种语言做随机的事情。遵循教程,了解你在做什么。这是java,不是C++。请遵循教程。您可以从.if using stack开始,然后实例化新堆栈并使用方法stack.pushObject,如果使用List,则实例化ArrayList并使用List。addObject@CommuSoft当然可以,但这是Java,不是另一种编程语言:。菱形运算符是在Java 7中引入的,而不是在Java 5中引入的。但除此之外,这是个好答案!的确,很抱歉,有时我会混淆编程语言版本。我会修好的。谢谢。@CommuSoft地平线下的内容非常有用,顺便问一下,我如何迭代堆栈?是否也使用迭代器方法?但我似乎只得到了包类名@hashCodeDiamond操作符是在Java7中引入的,而不是Java5。但除此之外,这是个好答案!的确,很抱歉,有时我会混淆编程语言版本。我会修好的。谢谢。@CommuSoft地平线下的内容非常有用,顺便问一下,我如何迭代堆栈?是否也使用迭代器方法?但我似乎只得到了包类名@hashcode