我正在尝试做类似的事情:

ArrayList<String> getMerged ( String host, String port, String filesToCopy ){
  ArrayList<String> merged = new ArrayList<String>();
  merged.add(host);
  merged.add(port);
  merged.addAll(filesToCopy.split(","));   //which is invalid
  return merged;
}


我想知道是否可以在不使用循环的情况下添加filesToCopy.split(“,”)元素。

另外,如果上述操作可以在字符串数组中完成,比如说合并String [](如果需要,还可以将filesToCopy传递为String []),那么最终效果会更好,我将把这个arrayList转换为数组。

我不是Java编程的新手,所以请不要介意这是一个愚蠢的问题。

最佳答案

您可以在单个数组中执行此操作:

String[] files = filesToCopy.split(","); // filesToCopy is an ArrayList, so I'm not
                                         // sure how this works; I'm assuming it's
                                         // a typo. Just get the files array somehow
String[] merged = new String[2 + files.length];
merged[0] = host;
merged[1] = port;
for (int i = 2; i < merged.length; i++) {
    merged[i] = files[i-2];
}


或者,没有“循环的开销”:

merged[0] = host;
merged[1] = port;
System.arraycopy(files, 0, merged, 2, files.length);


当然,这仍然会使用“幕后”循环,这是不可避免的。

10-06 01:28