我有这样的代码:
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.UnsupportedOperationException
06-03 15:05:29.614: ERROR/AndroidRuntime(7737): at java.util.AbstractList.remove(AbstractList.java:645)
这怎么才是正确的方式呢?Java.15
发布于 2010-06-03 20:11:04
可能是因为你在和unmodifiable wrapper一起工作。
更改此行:
List<String> list = Arrays.asList(split);
到这一行:
List<String> list = new LinkedList<>(Arrays.asList(split));
发布于 2013-09-09 04:35:23
我认为替换:
List<String> list = Arrays.asList(split);
使用
List<String> list = new ArrayList<String>(Arrays.asList(split));
解决了问题。
发布于 2010-06-03 20:11:10
Arrays.asList()
返回的列表可能是不可变的。你能试一下吗?
List<String> list = new ArrayList<>(Arrays.asList(split));
https://stackoverflow.com/questions/2965747
复制相似问题