【问题标题】:How do I print actual value instead of [[Ljava.lan.Number]? [duplicate]如何打印实际值而不是 [[Ljava.lan.Number]? [复制]
【发布时间】:2013-06-24 19:27:00
【问题描述】:

我有一个数字样本。我将它们存储在带有时间戳和值的数据点的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 而不是适当的值?

【问题讨论】:

    标签: java arraylist


    【解决方案1】:

    数组不会覆盖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]

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

    【讨论】:

    • 我并非不知道的关于数组的有趣细微差别。
    【解决方案2】:

    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.toString()

    【讨论】:

    • 使用 ArrayList 而不是 Arrays 有效。谢谢
    • 仅仅为了toString而改变基本的东西(数组到列表)似乎很激烈。
    • 我不喜欢将Collections 和Arrays 组合在一起,这很不自然。我会选择Number[][] 或List&lt;List&lt;Number&gt;&gt;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    相关资源
    最近更新 更多