如何打印Vector []的所有值

ter*_*ce6 2 java printing vector

我有一个存储我的数据VectorObject[]类型.如何打印它的所有对象?

代码:

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;
}
Run Code Online (Sandbox Code Playgroud)

印花

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

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

    }
Run Code Online (Sandbox Code Playgroud)

}

而且我想得到这样的事:

1202393057117 1 OOOOO String
1202393057117 2 OOOOO String
1202393057118 3 OOOOO String
1202393057118 4 OOOOO String
1202393057118 5 OOOOO String

Lau*_*nen 5

在你的打印循环中:

Object[] objs = vector.get(i);
for (Object o : objs) {
    System.out.print(o + " ");
}
System.out.println();
Run Code Online (Sandbox Code Playgroud)


Boz*_*zho 5

有效Java中的 Joshua Bloch 建议尽可能使用for-each循环:

for (Object[] array : vector) {
    for (Object obj : array) {
        System.out.println(obj);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,由于您使用的Object[]是固定大小为4的预先知道的属性集,因此建议创建一个新类:

class DataHolder {
    private someProperty;
    private someOtherProperty;
    ... + setters and getters
}
Run Code Online (Sandbox Code Playgroud)

而不是array[2] = something,你将拥有dataHolder.setSomeProperty(something)- 更具可读性和可维护性.

下一步是覆盖toString()(再次按照Bloch的建议)并实现它以打印对象的整个内部状态.

然后循环将如下所示:

for (DataHolder dataHolder : vector) {
    System.out.println(dataHolder);
}
Run Code Online (Sandbox Code Playgroud)

  • 他们_should_学会在可能的时候使用for-each.常规for循环是微不足道的,我怀疑任何人都会遇到问题.另一方面,不使用for-each似乎经常是一个问题. (2认同)