2010-06-10 12 views
1

J'ai un Vector de Object[] type qui stocke mes données. Comment imprimer tous ses objets?Comment imprimer toutes les valeurs de Vector []

Le code:

private static Vector<Object[]> vector = new Vector<Object[]>(); 


int event=0; 
for(int i=0; i<10; i++){ 
    vector.add(this.addToObject(System.currentTimeMillis(), event , "String")); 
    event++;  
} 

private Object[] addToObject(long t, int i,String s){ 
    Object[] o = new Object[4]; 
    o[3] = s; 
    o[2] = i; 
    o[1] = "00000"; 
    o[0] = t; 
    return o; 
} 

impression

public static void main(String[]args){ 
    main m = new Main(); 

    for(int i=0; i< m.vector.size(); i++){ 

    } 

}

Et je voudrais faire qqch comme ceci:

1202393057117 1 OOOOO Chaîne
1202393057117 2 Chaîne OOOOO
1202393057118 3 OOOOO Chaîne
1202393057118 4 OOOOO Chaîne
1202393057118 5 OOOOO Chaîne

+1

Est-ce ce devoir? Si oui, merci de le marquer comme tel. – rsp

+1

Pourquoi les gens utilisent-ils encore Vector au lieu de ArrayList? Existe-t-il un réseau souterrain de livres utilisant encore Vector? –

Répondre

5

l'intérieur de votre impression pour la boucle:

Object[] objs = vector.get(i); 
for (Object o : objs) { 
    System.out.print(o + " "); 
} 
System.out.println(); 
1
Arrays.deepToString(vector.get(i)); 

ou les imprimer manuellement, comme Lauri Lehtinen suggère.

0

Dans la boucle:

Object[] o = m.vector.get(i); 
System.out.printf("%d %d %s %s\n", o[0], o[2], o[1], o[3]); 
5

Joshua Bloch, dans Effective Java, suggère d'utiliser la boucle for-each lorsque cela est possible:

for (Object[] array : vector) { 
    for (Object obj : array) { 
     System.out.println(obj); 
    } 
} 

Mais puisque vous utilisez la Object[] avec une taille fixe de 4 , avec un ensemble de propriétés pré-connu, il est fortement conseillé de créer une nouvelle classe:

class DataHolder { 
    private someProperty; 
    private someOtherProperty; 
    ... + setters and getters 
} 

Et au lieu de array[2] = something, vous aurez dataHolder.setSomeProperty(something) - beaucoup plus lisible et maintenable.

L'étape suivante consiste à remplacer toString() (de nouveau comme conseillé par Bloch) et à l'implémenter pour imprimer tout l'état interne de l'objet.

Et la boucle ressemblera à ceci:

for (DataHolder dataHolder : vector) { 
    System.out.println(dataHolder); 
} 
+0

Pour les débutants, la boucle pour chaque boucle résume les détails importants que les personnes qui apprennent la langue doivent savoir. – jjnguy

+2

ils devraient apprendre à utiliser le pour chaque fois que cela est possible.La boucle for-normale est quelque chose de trivial et je doute que n'importe qui aura des problèmes avec cela. En revanche, ne pas utiliser pour chaque, semble être un problème souvent. – Bozho

+0

@jjnguy: l'abstraction est bonne. C'est l'ignorance qui est mauvaise. Et non, je ne crois pas que l'utilisation de l'abstraction supérieure mène à l'ignorance. – polygenelubricants

0

Vous pouvez également imprimer des éléments vectoriels en utilisant le code suivant

Vector v = new Vector(); 
v.addElement("Java"); 
v.addElement("is"); 
v.addElement("programming"); 
v.addElement("language"); 

// enumerate the elements in the vector. 
Enumeration vEnum = v.elements(); 
System.out.println("\nElements in vector:"); 
while(vEnum.hasMoreElements()) 
    System.out.print(vEnum.nextElement() + " "); 
1

Je pense que vous n'avez pas besoin de faire quelque chose de spécial. L'extrait de code ci-dessous fonctionne très bien:

System.out.println("The vector is: " + vector); 

Les requêtes sont les bienvenues!

Questions connexes