用java创建堆栈

用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")

我需要使用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");
    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