如何在Java中创建数组,数组列表,堆栈和队列?
2022-09-01 02:29:08
在没有关于问题究竟在问什么的更多细节的情况下,我将回答问题的标题,
创建数组
:
String[] myArray = new String[2];
int[] intArray = new int[2];
// or can be declared as follows
String[] myArray = {"this", "is", "my", "array"};
int[] intArray = {1,2,3,4};
创建数组列表
:
ArrayList<String> myList = new ArrayList<String>();
myList.add("Hello");
myList.add("World");
ArrayList<Integer> myNum = new ArrayList<Integer>();
myNum.add(1);
myNum.add(2);
这意味着,创建一个 和 对象。由于这是基元数据类型,因此不能使用,请参阅基元数据类型列表的链接。ArrayList
String
Integer
int
创建堆栈
:
Stack myStack = new Stack();
// add any type of elements (String, int, etc..)
myStack.push("Hello");
myStack.push(1);
创建队列
:(使用链接列表))
Queue<String> myQueue = new LinkedList<String>();
Queue<Integer> myNumbers = new LinkedList<Integer>();
myQueue.add("Hello");
myQueue.add("World");
myNumbers.add(1);
myNumbers.add(2);
与 一样,这个声明意味着创建一个 of 和 对象。ArrayList
Queue
String
Integer
为了回应您从其他给定答案中的评论,
我现在很困惑,为什么要使用字符串。以及意味着什么
<String>
我们仅用作纯示例,但您可以添加任何其他对象,但重点是您使用的对象而不是基元类型。每个基元数据类型都有自己的基元包装类,有关基元数据类型的包装类的列表,请参阅链接。String
我已经发布了一些链接来解释两者之间的区别,但这里有一个基元类型的列表
byte
short
char
int
long
boolean
double
float
这意味着,您不能像这样制作整数:ArrayList
ArrayList<int> numbers = new ArrayList<int>();
^ should be an object, int is not an object, but Integer is!
ArrayList<Integer> numbers = new ArrayList<Integer>();
^ perfectly valid
另外,您可以使用自己的对象,这是我创建的对象,Monster
public class Monster {
String name = null;
String location = null;
int age = 0;
public Monster(String name, String loc, int age) {
this.name = name;
this.loc = location;
this.age = age;
}
public void printDetails() {
System.out.println(name + " is from " + location +
" and is " + age + " old.");
}
}
在这里我们有一个对象,但现在在我们的类中,我们希望记录我们创建的所有's,所以让我们将它们添加到Monster
Main.java
Monster
ArrayList
public class Main {
ArrayList<Monster> myMonsters = new ArrayList<Monster>();
public Main() {
Monster yetti = new Monster("Yetti", "The Mountains", 77);
Monster lochness = new Monster("Lochness Monster", "Scotland", 20);
myMonsters.add(yetti); // <-- added Yetti to our list
myMonsters.add(lochness); // <--added Lochness to our list
for (Monster m : myMonsters) {
m.printDetails();
}
}
public static void main(String[] args) {
new Main();
}
}
(我帮助我女朋友的兄弟玩Java游戏,他也必须沿着这些路线做一些事情,但我希望这个例子得到了很好的证明。)
我猜你对类型的参数化感到困惑:
// This works, because there is one class/type definition in the parameterized <> field
ArrayList<String> myArrayList = new ArrayList<String>();
// This doesn't work, as you cannot use primitive types here
ArrayList<char> myArrayList = new ArrayList<char>();