Подтвердить что ты не робот

Как создать Array, ArrayList, Stack и Queue в Java?

Я читал статью Java, но не обнаружил различий в декларации и был смущен. Может ли кто-нибудь известить меня об этом?

Добавлена ​​статья

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

4b9b3361

Ответ 1

Без дополнительной информации о том, что именно задается вопросом, я собираюсь ответить на заголовок вопроса,

Создайте 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. Вы не можете использовать 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, это объявление означает создание 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.");
 }
} 

Здесь мы имеем объект 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-игрой, и он тоже должен был что-то делать по этим строкам, но я надеюсь, что этот пример был хорошо продемонстрирован)

Ответ 2

Я предполагаю, что вы путаетесь с параметризацией типов:

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

Ответ 3

Просто небольшая поправка к первому ответу в этом потоке.

Даже для Stack вам нужно создать новый объект с помощью дженериков, если вы используете Stack из пакетов java util.

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

Хотя этот код работает нормально, имеет небезопасные или непроверенные операции, которые приводят к ошибке.