如何从protobuf中的UnmodifiableList中删除项目

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)

我该如何进行更换?

Ela*_*nda 7

我最终克隆了列表,修改了克隆列表并将其放入旧列表中.

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)


Woj*_*ior 5

解决方案之一是创建一个新的可修改列表来包装旧列表 - 我的意思是将它传递给例如 new 的构造函数ArrayList()

List<T> modifiable = new ArrayList<T>(unmodifiable);
Run Code Online (Sandbox Code Playgroud)

从现在开始,您应该能够删除和添加元素。