Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 移除列表中特定索引处的元素时获取UnsupportedOperationException<;列表<;字符串>>;?_Java_Hibernate_List_Arraylist_Unsupportedoperation - Fatal编程技术网

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(或任何其他实现)中,然后才能删除。