如何在protobuf3中将映射添加到消息中

How to add map to message in protobuf3

我正在尝试使用自 protobuf3 以来支持的地图创建消息。我不知道如何将地图添加到消息中。

原始文件片段:

message MyData {
    map<string, Queue> myMap = 1;

    message Queue {
        repeated float position = 1;
  }
}

Java片段:

MyData.Builder dataBuilder = SnowflakeData.newBuilder();
dataBuilder. ???

我可以得到 dataBuilder.getMyMap(),但是 "set"

有问题

谢谢

protoc 在消息的生成器中生成以下方法:

public Map<String, Queue> getMutableMyMap()`

可用于向您的字段添加元素:

// ...
MyData.Builder dataBuilder = MyData.newBuilder();
Map<String, Queue> map = dataBuilder.getMutableMyMap();
map.put("key1", queue);

Here 是 google 生成的 java 代码的文档,关于映射字段的部分。

.getMutableXMap() 已弃用。相反,您可以使用 .putX().

使用 putAllxxx()

MyData.Builder dataBuilder = SnowflakeData.newBuilder();
dataBuilder.putAllMyMap(targetMap)