我以这种方式获得List<List<String>>
数据,
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"]]
我想删除内部列表中索引14处的值。
ex:在此内部列表数据中
[["1185","R","4t","G","06","L","GT","04309","2546","2015","CF FE","01H1","20","23840","FF20"]]
我想删除FF20,
必须对List<List<String>> repdata
中的所有内部列表重复此操作。
所以,我的最后List<List<String>>
就是这样,
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"]
实际上来自hibernate的这个List<List<String>> repdata is = criteria.list()
。这是转化的方式,
criteria.setResultTransformer(Transformers.TO_LIST);
我厌倦了这种方式,
List<List<String>> repdata = cr.list();
for( List<String> list: repdata ){
if( list.size() > 14){
list.remove(14);
}
}
但我不断得到UnsupportedOperationException
。
有谁可以帮我解决这个问题?
答案 0 :(得分:1)
虽然我没有足够的可用信息,但我怀疑返回的列表可能是固定大小(或以其他方式不可修改)。一个例子是我们从Arrays.asList
获得的列表,它无法添加/删除任何内容。我们无法在结构上修改此列表。
解决方案可能是使用当前列表中的项初始化列表实现。 LinkedList支持更快的删除,可能是合适的。类似的东西:
List<String> list = new LinkedList<String>(Arrays.asList(your_list));
如果符合您的要求,您也可以使用ArrayList
。
答案 1 :(得分:0)
我们不应该使用List的remove方法。相反,使用迭代器遍历它并使用迭代器自己的remove方法很有用。因为当使用list的remove方法时,将抛出ConcurrentModificationException。