Ela*_*nda 1 java list protocol-buffers proto
我有一个protobuf列表作为其成员之一
我想替换此列表中的项目.
我试图移除一个项目i并在同一位置添加另一个项目i
List<Venues.Category> categoryList = builder.getCategoryList();
categoryList.remove(i);
Run Code Online (Sandbox Code Playgroud)
但是我得到了一个不受支持的错误
java.lang.UnsupportedOperationException
at java.util.Collections$UnmodifiableList.remove(Collections.java:1317)
Run Code Online (Sandbox Code Playgroud)
我该如何进行更换?
我最终克隆了列表,修改了克隆列表并将其放入旧列表中.
List<Venues.Category> clone = categoryList.stream().collect(Collectors.toList());
clone.remove(i);
clone.add(i, modifyCategory(category, countryAbbr, gasStationConfig));
builder.clearCategory();
builder.addAllCategory(clone);
Run Code Online (Sandbox Code Playgroud)
解决方案之一是创建一个新的可修改列表来包装旧列表 - 我的意思是将它传递给例如 new 的构造函数ArrayList():
List<T> modifiable = new ArrayList<T>(unmodifiable);
Run Code Online (Sandbox Code Playgroud)
从现在开始,您应该能够删除和添加元素。