如何打印实际值而不是[[Ljava.lan.Number]?

时间:2013-06-24 19:27:01

标签: java arraylist

我有一个数字样本。我将它们存储在带有时间戳和值的List个数据点中。这是我的代码:

List<Number> samples = {55,67,57,67};
List<Number[]> dps = Lists.newArrayList();

Calender c1; c1.set(2013, 5, 20, 15, 44, 00);

int timeStartSec = (int) (c1.getTime().getTime() / 1000);

for(Number num: samples){
    dps.add(new Number[] { timeStartSec, num});
    timeStartSec = timeStartSec+5;
}

System.out.println("Final DataPoints " + dps);

输出:

Final DataPoints [[Ljava.lang.Number;@af8358, [Ljava.lang.Number;@d80be3, [Ljava.lang.Number;@1f4689e, [Ljava.lang.Number;@1006d75, [Ljava.lang.Number;@1125127, [Ljava.lang.Number;@18dfef8, [Ljava.lang.Number;@15e83f9, [Ljava.lang.Number;@2a5330, [Ljava.lang.Number;@bb7465,]

为什么打印为java.lang.Number而不是相应的值?

2 个答案:

答案 0 :(得分:9)

数组不会覆盖toString方法(烦人)。看看Arrays.toString

Number[] nums = {1, 2, 3, 4};
System.out.println(nums);
System.out.println(Arrays.toString(nums));
[Ljava.lang.Number;@14b7453
[1, 2, 3, 4]

在您的情况下,您需要在Arrays.toString的每个元素上调用dps,打印/存储结果。

答案 1 :(得分:1)

Array实例没有toString()方法。您可能希望使用ArrayList代替:

List<Number> samples - {55,67,57,67};
List<List<Number>> dps = new ArrayList<List<Number>>();

for(Number num: samples){

    dps.add(Arrays.asList(timeStartSec, 10));
    timeStartSec = timeStartSec+5;
}
System.out.println("Final DataPoints " + dps);

编辑:或类Arrays上定义的静态方法:Arrays.toString()