【问题标题】:Linked List to Array in java [duplicate]java中的链表到数组[重复]
【发布时间】:2014-10-10 10:13:51
【问题描述】:

我正在尝试将链表转换为 Java 中的数组,如下面的代码所示

import java.io.*;
import java.util.*;

public class LinkedLst
{
    public static void main(String[] args) throws IOException
    {
        FileInputStream fis = new FileInputStream("input");
        LinkedList<Integer> ll = new <Integer>LinkedList();
        int c;
        while((c = fis.read())!=-1)
            ll.add(new Integer(c));
        Integer[] arr = ll.toArray(new Integer[ll.size()]);
        System.out.println(arr);
        fis.close();
    }
}

输入文件如下

12
13
14
15
16

我可以编译,但运行时出现以下错误

[Ljava.lang.Integer;@2098746b

有人可以帮我处理这段代码吗?

【问题讨论】:

  • 错误是由于 Integer[] arr = ll.toArray(new Integer[ll.size()]);代码行
  • 是错误还是代码有效并给出了输出?你不能打印这样的数组。相反,遍历它的索引并分别打印它们。
  • 我搜索了其他线程,但他们的解释并没有纠正我的错误

标签: java arrays list linked-list


【解决方案1】:

这不是错误,Java 的设计者认为您可能希望打印数组:P

您需要打印Arrays.toString(arr) 才能获得理智。或者您可以将其保留为列表。

顺便说一句,您不是在读取 4 字节 int 值,您实际上是在读取无符号字节 (0-255)

如果您想以字节数组的形式读取文件,则可以使用更简单的替代方法。

FileInputStream fis = new FileInputStream("input");
byte[] bytes = new byte[fis.available()];
fis.read(bytes);
fis.close();

这将使用 LinkedList&lt;Integer&gt; 将使用的内存的一小部分(大约 1/40)并且速度更快。

【讨论】:

    猜你喜欢
    • 2013-04-06
    • 2014-10-25
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 2016-05-25
    相关资源
    最近更新 更多