为什么在尝试从列表中删除元素时会得到一个UnSuptedOperationException?我有个密码:public static String SelectRandomFromTemplate(String template,int count) {
String[] split = template.split("|");
List<String> list=Arrays.asList(split);
Random r = new Random();
while( list.size() > count ) {
list.remove(r.nextInt(list.size()));
}
return StringUtils.join(list, ", ");}我明白了:06-03 15:05:29.614: ERROR/AndroidRuntime(7737): java.lang.UnsupportedOperationException06-03 15:05:29.614: ERROR/AndroidRuntime(7737): at java.util.AbstractList.remove(AbstractList.java:645)这怎么才是正确的呢?Java.15
3 回答

牛魔王的故事
TA贡献1830条经验 获得超3个赞
在……上面 Arrays.asList
返回一个固定大小的列表
Arrays.asList
*返回 固定尺寸列表由指定的数组支持。
add
remove
List
.
固定
LinkedList
remove
.
List<String> list = new LinkedList<String>(Arrays.asList(split));
在……上面 split
取正则
String.split(String regex)
*将此字符串拆分为给定的匹配项。 正则表达式 .
|
|
\|
"\\|"
.
修正:
template.split("\\|")
关于更好的算法
remove
List
listIterator()
remove()
O(N)
.

至尊宝的传说
TA贡献1789条经验 获得超10个赞
Arrays.asList
newList.addAll(Arrays.asList(newArray));
添加回答
举报
0/150
提交
取消