2011-08-05 58 views
1

我基本上是将文本文件读入列表中,并将ArrayList的内容复制到Object[][](如下所示)。我需要保留返回格式Object[][]以在其他一些功能中使用它。有没有在Java中这样做的优雅方式?提前致谢。将ArrayList复制到二维数组中的优雅方法

public Object[][] getResults() { 
    List<String> arrList =FileUtils.readLines(new File("myfile.txt")); 
    Object[][] result=new Object[arrList.size()][];  
    //how do I optimize this code below? 
    int i=0; 
    for(String s:arrList){ 
    result[i]=new Object[]{new String(s)}; 
    i++; 
    } 
    return result; 
} 
+3

列表如何转换为二维数组? – Kal

+0

将{{new String(s)}'更改为{s}。你已经有了一个完美可用的字符串,所以用这种方式创建一个全新的字符串是毫无意义的。除此之外,创建运行线性时间 - 我不完全确定有*更好(保存更改返回类型,这仍然可能会导致线性时间操作)。 –

+0

Kal-此代码中的列维几乎是无用的。我正在创建Object [10] [](让我们假设10是列表大小) – nilesh

回答

1

您不需要创建一个新的String实例。字符串是不可改变的,分享和重用它们完全可以。

int i = 0; 
for (String s : arrList) { 
    result[i] = new Object[] {s}; 
    i++; 
} 
+0

感谢您指定String实例。会有什么替代方案,以便我可以避免这个循环。我可能要经历数千条记录,并且我试图减少性能瓶颈 – nilesh

+0

否。循环是必要的。但在尝试优化之前,您是否使用此代码衡量并确定了性能问题? –

+0

我还没有衡量这个表现,但总体来说,如果有另一种方法,它会在没有for循环的情况下表现更好 – nilesh