Java 将ArrayList复制到二维数组的优雅方式

Java 将ArrayList复制到二维数组的优雅方式,java,arrays,list,Java,Arrays,List,我基本上是将一个文本文件读入一个列表,然后将ArrayList的内容复制到Object[][]中,如下所示。我需要保留返回格式Object[][],以便在其他函数中使用它。在Java中有什么优雅的方法可以做到这一点吗?提前谢谢 public Object[][] getResults() { List<String> arrList =FileUtils.readLines(new File("myfile.txt")); Object[][] result=new O

我基本上是将一个文本文件读入一个列表,然后将
ArrayList
的内容复制到
Object[][]
中,如下所示。我需要保留返回格式
Object[][]
,以便在其他函数中使用它。在Java中有什么优雅的方法可以做到这一点吗?提前谢谢

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;
}
public对象[][]getResults(){
List arrList=FileUtils.readLines(新文件(“myfile.txt”);
对象[][]结果=新对象[arrList.size()][];
//如何优化下面的代码?
int i=0;
for(字符串s:arrList){
结果[i]=新对象[]{新字符串};
i++;
}
返回结果;
}

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

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

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

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

列表如何转换为二维数组?将
{newstring(s)}
更改为{s}。您已经有了一个完全可用的字符串,因此以这种方式创建一个全新的字符串是毫无意义的。除此之外,创建是在线性时间内运行的-我不完全确定是否有更好的方法(除了更改返回类型,这可能仍然会导致线性时间操作)。我正在创建对象[10][](假设10是列表大小)X-zero..你是对的..我将其固定为{new String(s)}列表如何转换为二维数组?将
{new String(s)}
更改为{s}。您已经有了一个完全可用的字符串,因此以这种方式创建一个全新的字符串是毫无意义的。除此之外,创建是在线性时间内运行的-我不完全确定是否有更好的方法(除了更改返回类型,这可能仍然会导致线性时间操作)。我正在创建对象[10][](假设10是列表大小)X-zero..你是对的..我将其固定为{new String(s)}感谢你指向字符串实例。是否有任何替代方案,使我可以避免这种循环。我可能要浏览成千上万的记录,我正试图降低性能瓶颈。循环是必要的。但在尝试优化之前,您是否测量并确定了此代码的性能问题?我还没有测量此代码的性能,我认为如果没有for循环,如果有其他方法,它的性能会更好。感谢您指向字符串实例。是否有任何替代方案,使我可以避免这种循环。我可能要浏览成千上万的记录,我正试图降低性能瓶颈。循环是必要的。但在尝试优化之前,您是否测量并确定了此代码的性能问题?我还没有测量此代码的性能,我认为如果有其他方法,如果没有for循环,它通常会表现得更好