1

可能重复:
在 Java 中将数组分配给 ArrayList

如何转换字符串数组,例如:

String logsSplitFromUrdu[] = fromTheRecentLogFile.split("غزل");

变成一个ArrayList<String>

编辑:

当我遇到错误时,我正在这样做:

ArrayList<String> time = (ArrayList<String>)Arrays.asList(logsSplitFromUrdu);

编辑 :

执行上述操作时出现的异常:

java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList
    at Tester.main(Tester.java:26)
4

6 回答 6

2

使用类中的Arrays.asList()方法Arrays。它将返回List正确的泛型类型(String在这种情况下):

List<String> list = Arrays.asList(logsSplitFromUrdu);

如果你绝对需要 anArrayList<String>并且 aList<String>不会做,那么在前一行之后再写一行:

ArrayList<String> arraylist = new ArrayList<String>(list);
于 2012-10-14T14:51:54.770 回答
2

看看Arrays#asList。此方法返回一个fixed size列表。

所以,如果你是ok with fixed size list,那么你可以使用这个: -

List<String> fixedList = Arrays.asList(logsSplitFromUrdu);

但是,如果want to modify您是新创建的List,则需要像这样创建它:-

ArrayList<String> modifiableList = 
             new ArrayList<String>(Arrays.asList(logsSplitFromUrdu))

但你不应该这样做: -

ArrayList<String> modifiableList = 
                  (ArrayList<String>)Arrays.asList(logsSplitFromUrdu))

它会给你ClassCastException,因为从返回的列表Arrays.asList是类型: -java.util.Arrays.ArrayList并且它不能转换为: -java.util.ArrayList

更新: -java.util.Arrays#ArrayList是类中定义的静态Arrays类。

于 2012-10-14T14:54:36.657 回答
0

的返回类型

Arrays.asList(logsSplitFromUrdu);

List<String>并且不能强制转换为ArrayList<String>. 相反,您可以使用:

List<String> myList = Arrays.asList(logsSplitFromUrdu);

它返回一个不可修改的列表。要获得可修改的列表,您可以使用:

ArrayList<String> modifyiableList = new ArrayList<String>(myList); 
modifyiableList.add("...");
于 2012-10-14T14:52:06.373 回答
0

你必须使用 java.util.Arrays 的 asList 方法,参考这里的文档

于 2012-10-14T14:52:53.283 回答
0

使用Arrays.asList()方法转换arrayArrayList

String logsSplitFromUrdu[] = fromTheRecentLogFile.split("غزل");

ArrayList<String> arList = new ArrayList<String>(Array.asList(logsSplitFromUrdu));
于 2012-10-14T14:55:51.177 回答
0

您可以简单地使用 for 循环将数组中的所有元素复制到新的 ArrayList 中,如下所示:

ArrayList<String> logsList = new ArrayList<String>();
for(int i = 0; i < logsSplitFromUrdu.length; i++)
{
    logsList.add(logsSplitFromUrdu[i]);
}

在此 logsList 之后将包含原始数组中的所有元素。

于 2012-10-14T15:19:38.223 回答