java中的链表到数组



我正在尝试用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

有人能帮我处理这个代码吗?

这不是一个错误,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<Integer>将使用的内存的一小部分(大约1/40),并且速度要快得多。

相关内容

  • 没有找到相关文章

最新更新