Java 移除列表中特定索引处的元素时获取UnsupportedOperationException<;列表<;字符串>>;?
我有Java 移除列表中特定索引处的元素时获取UnsupportedOperationException<;列表<;字符串>>;?,java,hibernate,list,arraylist,unsupportedoperation,Java,Hibernate,List,Arraylist,Unsupportedoperation,我有列表这样的数据 List<List<String>> repdata = [ ["1185","R","4t","G","06","L","GT","04309","2546","2015","CF FE","01H1","20","23840","FF20"], ["1192","R","11t","H","06","L","SA","04772","8345","2015","BZ C8 FE","01D6","13","33390","LC13"
列表
这样的数据
List<List<String>> repdata = [
["1185","R","4t","G","06","L","GT","04309","2546","2015","CF FE","01H1","20","23840","FF20"],
["1192","R","11t","H","06","L","SA","04772","8345","2015","BZ C8 FE","01D6","13","33390","LC13"]]
List<List<String>> repdata = [
["1185","R","4t","G","06","L","GT","04309","2546","2015","CF FE","01H1","FF20","23840"],
["1192","R","11t","H","06","L","SA","04772","8345","2015","BZ C8 FE","01D6","13","33390"]
criteria.setResultTransformer(Transformers.TO_LIST);
List<List<String>> repdata = cr.list();
for( List<String> list: repdata ){
if( list.size() > 14){
list.remove(14);
}
}
我想删除FF20
这必须对列表repdata
中的所有内部列表重复
所以,我最后的列表是这样的
List<List<String>> repdata = [
["1185","R","4t","G","06","L","GT","04309","2546","2015","CF FE","01H1","20","23840","FF20"],
["1192","R","11t","H","06","L","SA","04772","8345","2015","BZ C8 FE","01D6","13","33390","LC13"]]
List<List<String>> repdata = [
["1185","R","4t","G","06","L","GT","04309","2546","2015","CF FE","01H1","FF20","23840"],
["1192","R","11t","H","06","L","SA","04772","8345","2015","BZ C8 FE","01D6","13","33390"]
criteria.setResultTransformer(Transformers.TO_LIST);
List<List<String>> repdata = cr.list();
for( List<String> list: repdata ){
if( list.size() > 14){
list.remove(14);
}
}
我厌倦了这样搬家
List<List<String>> repdata = [
["1185","R","4t","G","06","L","GT","04309","2546","2015","CF FE","01H1","20","23840","FF20"],
["1192","R","11t","H","06","L","SA","04772","8345","2015","BZ C8 FE","01D6","13","33390","LC13"]]
List<List<String>> repdata = [
["1185","R","4t","G","06","L","GT","04309","2546","2015","CF FE","01H1","FF20","23840"],
["1192","R","11t","H","06","L","SA","04772","8345","2015","BZ C8 FE","01D6","13","33390"]
criteria.setResultTransformer(Transformers.TO_LIST);
List<List<String>> repdata = cr.list();
for( List<String> list: repdata ){
if( list.size() > 14){
list.remove(14);
}
}
List repdata=cr.List();
用于(列表:repdata){
如果(list.size()>14){
名单.删除(14);
}
}
但我不断收到不支持的操作异常
有人能帮我解决这个问题吗?虽然我没有足够的可用信息,但我怀疑返回的列表可能是固定大小的(或者以其他方式无法修改)。一个例子是我们从数组中得到的列表。asList
无法向其中添加/删除任何内容。我们无法从结构上修改此列表
解决方案可能是使用当前列表中的项初始化列表实现。LinkedList支持更快的删除,可能比较合适。比如:
List<String> list = new LinkedList<String>(Arrays.asList(your_list));
List List=newlinkedlist(Arrays.asList(your_List));
如果符合您的要求,您也可以使用ArrayList
。我们不应该使用列表的删除方法。相反,使用迭代器和迭代器自己的remove方法遍历它是有用的。因为在使用list的remove方法时,将抛出ConcurrentModificationException 是否有可能cr.list()
返回一个无法修改的固定大小列表?我怀疑Criteria#list
返回一个不可修改的列表
,例如,通过集合#不可修改列表
获取。有关如何创建列表
的深度副本的说明,请参阅。for循环和删除是一个不好的组合。请使用迭代器或其他在repdata.getClass()
print中提到的东西?以及list.getClass()
。这应该给你们一个线索。是的,当然,我只能编辑它。。有没有其他方法可以移除它在这种情况下,您需要将元素复制到新的ArrayList(或任何其他实现)中,然后才能删除。