Java 与从字符串数组到ArrayList的转换相关的性能

Java 与从字符串数组到ArrayList的转换相关的性能,java,Java,我正在将一个空字符串数组(可以从中间件获得)转换为列表 对于转换过程,我使用了Arrays.asList(请参见下面的代码),它抛出了一个java.lang.UnsupportedOperationException public class Ramddd { public static void main(String args[]) { String[] words = null; if (words == null) { wo

我正在将一个空字符串数组(可以从中间件获得)转换为列表

对于转换过程,我使用了Arrays.asList(请参见下面的代码),它抛出了一个java.lang.UnsupportedOperationException

public class Ramddd {
    public static void main(String args[]) {
        String[] words = null;
        if (words == null) {
            words = new String[0];
        }
        List<String> newWatchlist = Arrays.asList(words);
        List<String> other = new ArrayList<String>();
        other.add("ddd");
        newWatchlist.addAll(other);
    }

}



Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.AbstractList.add(Unknown Source)
    at java.util.AbstractList.add(Unknown Source)
    at java.util.AbstractCollection.addAll(Unknown Source)
    at Ramddd.main(Ramddd.java:18)
公共类Ramddd{
公共静态void main(字符串参数[]){
String[]words=null;
if(words==null){
words=新字符串[0];
}
List newWatchlist=Arrays.asList(words);
List other=new ArrayList();
其他。添加(“ddd”);
newWatchlist.addAll(其他);
}
}
线程“main”java.lang.UnsupportedOperationException中出现异常
位于java.util.AbstractList.add(未知源)
位于java.util.AbstractList.add(未知源)
位于java.util.AbstractCollection.addAll(未知源)
位于Ramddd.main(Ramddd.java:18)
如果我使用

List<String> mylist = new ArrayList<String>();
        for (int i = 0; i < words.length; i++) {
            mylist.add(words[i]);
        }
List mylist=new ArrayList();
for(int i=0;i
这形成了一个适当的
列表
,任何像
addALL
removeALL
这样的操作看起来都不错,但不想使用这种for-loop方法,因为这可能会导致性能下降。
请告诉我将字符串数组转换为ArrayList的最佳安全方法。

以下方法如何:

public class Ramddd {
    public static void main(String args[]) {
        String[] words = getWords();
        if (words == null) {
            words = new String[0];
        }
        List<String> other = new ArrayList<String>(Arrays.asList(words));
        other.add("ddd");
    }
}
公共类Ramddd{
公共静态void main(字符串参数[]){
String[]words=getWords();
if(words==null){
words=新字符串[0];
}
List other=newarraylist(Arrays.asList(words));
其他。添加(“ddd”);
}
}
就性能而言,我不认为这是一个需要担心的问题,除非您有一个非常庞大的字符串数组。

该方法返回一个由指定数组支持的固定大小的列表。此方法(
java.util.Arrays.ArrayList
)的
List
实现不支持这些方法。有关详细信息,请参阅文档

如果您知道单词列表的总大小,您可以初始化容量,添加n个元素需要O(n)时间。如果您不知道最终大小,请使用LinkedList


请参阅中的详细信息。

响应是动态响应,我之前不知道它是否为null或包含任何内容。有时数组是一个巨大的数组(150个字)(因此不想影响应用程序性能)。我想说,一个巨大的数组将包含数百万条记录。150的尺寸很小。无论如何,在优化性能时,您应该始终依靠经验证据。不要过早地优化!这将使它变得更好:List mylist=newarraylist(words.length);