web-dev-qa-db-ja.com

Javaで配列、ArrayList、スタック、およびキューを作成する方法

私はJavaの記事を読んでいたが、宣言に違いは見られなかったので、混乱していた。

記事を追加しました

http://www.theparticle.com/javadata2.html

40
Kevin

質問が正確に何を求めているかについての詳細なしで、質問のタイトルに答えます。

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ゲームで助けました、そして彼はそれらの線に沿って何かをしなければなりませんでしたが、例が十分に実証されたことを望みます

71

私はあなたが型のパラメータ化と混同していると推測しています:

// 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>();
2
user132014

このスレッドの最初の回答に対するわずかな修正。

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);
    */

このコードは正常に機能しますが、安全ではない、またはチェックされていない操作があり、エラーが発生します。

1