簡體   English   中英

如何在Java中創建Array,ArrayList,Stack和Queue?

[英]How to create an Array, ArrayList, Stack and Queue in Java?

我正在閱讀一篇Java文章,但發現聲明沒有差異,並且感到困惑。 任何人都可以列出這個嗎?

添加了文章

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

如果沒有關於問題究竟是什么問題的更多細節,我將回答問題的標題,

創建一個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);

這意味着,創建StringInteger對象的ArrayList 不能使用int因為這是原始數據類型 ,請參閱原始數據類型列表的鏈接。

創建一個Stack

Stack myStack = new Stack();
// add any type of elements (String, int, etc..)
myStack.push("Hello");
myStack.push(1);

創建Queue :( 使用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相同,此聲明意味着創建StringInteger對象的Queue


更新:

回答你對其他答案的評論,

我現在很困惑,為什么要使用字符串。 以及<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.");
 }
} 

這里我們有一個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);
    */

雖然此代碼工作正常,但有不安全或未經檢查的操作會導致錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM