ter*_*ce6 2 java printing vector
我有一个存储我的数据Vector的Object[]类型.如何打印它的所有对象?
代码:
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
在你的打印循环中:
Object[] objs = vector.get(i);
for (Object o : objs) {
System.out.print(o + " ");
}
System.out.println();
Run Code Online (Sandbox Code Playgroud)
有效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)