web-dev-qa-db-fra.com

Comment créer un tableau, une liste de tableaux, une pile et une file d'attente en Java?

Je lisais un article Java, mais je n'ai trouvé aucune différence dans la déclaration et je suis confus. Quelqu'un peut-il me citer cela?

Ajouté l'article

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

40
Kevin

Sans plus de détails sur la question posée, je vais répondre au titre de la question,

Créez un 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};

Créez un 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);

Cela signifie que vous créez un ArrayList d’objets String et Integer. Vous ne peut pas utilisez int car c'est un types de données primitifs , voir le lien pour une liste des types de données primitifs.

Créez un Stack :

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

Créez un Queue : ( en utilisant 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);

Même chose qu'un ArrayList, cette déclaration signifie créer un objet Queue sur String et Integer.


Mise à jour:

En réponse à votre commentaire de l'autre réponse donnée,

je suis assez confus maintenant, pourquoi utilisez string. et qu'est-ce que <String> veux dire

Nous utilisons String uniquement à titre d'exemple, mais vous pouvez ajouter n'importe quel autre objet, mais le point principal est que vous utilisez un objet = pas un type primitif. Chaque type de données primitif a son propre classe de wrapper de primitive , voir le lien pour obtenir la liste de la classe de wrapper du type de données primitif.

J'ai posté des liens pour expliquer la différence entre les deux, mais voici une liste de types primitifs

  • byte
  • short
  • char
  • int
  • long
  • boolean
  • double
  • float

Ce qui signifie que vous n'êtes pas autorisé à créer un ArrayList de nombre entier comme ceci:

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

De plus, vous pouvez utiliser vos propres objets, voici mon objet Monster que j'ai créé,

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.");
 }
} 

Ici nous avons un objet Monster, mais maintenant dans notre Main.Java classe nous voulons garder une trace de tous nos Monster que nous créons, ajoutons-les donc à un 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();
 }
}

( J'ai aidé le frère de ma petite amie avec un jeu Java, et il a dû faire quelque chose dans ce sens également, mais j'espère que l'exemple a été bien démontré)

71
Anthony Forloney

Je suppose que vous confondez avec le paramétrage des types:

// 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

Juste une petite correction à la première réponse dans ce fil.

Même pour Stack, vous devez créer un nouvel objet avec des génériques si vous utilisez Stack à partir de packages 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");

si utilisé autrement, comme mentionné dans le post ci-dessus, qui est:

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

Bien que ce code fonctionne correctement, il comporte des opérations non sécurisées ou non contrôlées qui entraînent des erreurs.

1
Prashanth Peddabbu