我有这个代码:
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, ", ");
}
Run Code Online (Sandbox Code Playgroud)
我明白了:
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)
Run Code Online (Sandbox Code Playgroud)
这怎么会是正确的方法?Java.15
我试图从a中删除元素List并获取java.lang.UnsupportedOperationException.
public <T extends Object> void findDuplicates(
String title, Multimap<T, ChunkId> map) {
for (T key : map.keySet()) {
Collection<ChunkId> ids = map.get(key);
List<ChunkId> idList = (Arrays.asList(ids.toArray(new ChunkId[0])));
removeUsedIds(idList);
Collections.sort(idList);
//...
}
}
private void removeUsedIds(List<ChunkId> idList) {
// decrement counter to avoid indexing changed parts of list
for (int i = idList.size() - 1; i >= 0; i--) {
if (usedIdSet.contains(idList.get(i))) {
idList.remove(i); // **** Exception thrown here
}
}
}
Run Code Online (Sandbox Code Playgroud)
我明白了
Exception in thread …Run Code Online (Sandbox Code Playgroud) 我试图从a中删除一些元素List,但即使是最简单的例子,就像这个答案或者这个中的元素一样,也行不通.
public static void main(String[] args)
{
List<String> list = Arrays.asList("1", "2", "3", "4");
for (Iterator<String> iter = list.listIterator(); iter.hasNext();)
{
String a = iter.next();
if (true)
{
iter.remove();
}
}
}
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.remove(Unknown Source)
at java.util.AbstractList$Itr.remove(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
使用正常Iterator而不是a ListIterator没有帮助.我错过了什么?我正在使用java 7.
我正在尝试使用java中的交叉点.如果我有以下内容,我只想要一个没有任何内容的arraylist,因为交集给了我零.
List<String> coll1 = Arrays.asList(["A"]);
List<String> coll2 = Arrays.asList(["B","C"]);
coll1.retainAll(coll2);
Run Code Online (Sandbox Code Playgroud)
但是retainAll会抛出此异常:
java.lang.UnsupportedOperationException
at java.util.AbstractList.remove(AbstractList.java:161)
at java.util.AbstractList$Itr.remove(AbstractList.java:374)
at java.util.AbstractCollection.retainAll(AbstractCollection.java:410)
Run Code Online (Sandbox Code Playgroud)
如果我将列表转换为集合,那么如果我调用retainAll,我会得到一个空的集合:
Set<String> set1 = new HashSet<String>(coll1);
Set<String> set2 = new HashSet<String>(coll2);
set1.retainAll(set2); //gives me an empty set, which is good!
Run Code Online (Sandbox Code Playgroud)
为什么ArrayList有空交叉点的问题?