質問が正確に何を求めているかについての詳細なしで、質問のタイトルに答えます。
Array
を作成します。
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
を作成します。
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
を作成します。あなたはcannotint
を使用します。これは プリミティブデータ型 であるため、リストのリンクを参照してくださいプリミティブデータ型の。
Stack
を作成します:
Stack myStack = new Stack();
// add any type of elements (String, int, etc..)
myStack.Push("Hello");
myStack.Push(1);
Queue
を作成します:(using LinkedList)
Queue<String> myQueue = new LinkedList<String>();
Queue<Integer> myNumbers = new LinkedList<Integer>();
myQueue.add("Hello");
myQueue.add("World");
myNumbers.add(1);
myNumbers.add(2);
ArrayList
と同じことです。この宣言は、Queue
およびString
オブジェクトのInteger
を作成することを意味します。
他の与えられた答えからのあなたのコメントに応じて、
私は今かなり混乱しています、なぜ文字列を使用しています。そして何が
<String>
手段
String
は純粋な例としてのみ使用していますが、他のobjectを追加できますが、主なポイントはobjectnotプリミティブ型。各プリミティブデータ型には独自の プリミティブラッパークラス があります。プリミティブデータ型のラッパークラスのリストについては、リンクを参照してください。
2つの違いを説明するリンクを投稿しましたが、ここにプリミティブ型のリストがあります
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.");
}
}
ここには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>();
このスレッドの最初の回答に対するわずかな修正。
Stackの場合でも、Java utilパッケージからStackを使用している場合は、ジェネリックで新しいオブジェクトを作成する必要があります。
Right usage:
Stack<Integer> s = new Stack<Integer>();
Stack<String> s1 = new Stack<String>();
s.Push(7);
s.Push(50);
s1.Push("string");
s1.Push("stack");
上記の投稿で言及されているように、それ以外の場合に使用される場合:
/*
Stack myStack = new Stack();
// add any type of elements (String, int, etc..)
myStack.Push("Hello");
myStack.Push(1);
*/
このコードは正常に機能しますが、安全ではない、またはチェックされていない操作があり、エラーが発生します。