我正在尝试用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),并且速度要快得多。