Я использую Apache Avro.Apache Avro: карта использует CharSequence как ключ
Моя схема имеет тип карты:
{"name": "MyData",
"type" : {"type": "map",
"values":{
"type": "record",
"name": "Person",
"fields":[
{"name": "name", "type": "string"},
{"name": "age", "type": "int"},
]
}
}
}
После компиляции схемы, то genated использование класса Java CharSequence
как ключа для Map
MyData
.
Это очень неудобно использовать CharSequence
в Map
в качестве ключа, есть способ создания String
ключа типа для Map
в Apache Avro?
P.S.
Проблема заключается в том, что, например dataMap.containsKey("SOME_KEY")
будет возвращает false
, даже если есть такой ключ есть, только потому, что это CharSequence
. Кроме того, поместить запись в карту с существующим ключом, не переместить старый. Вот почему я говорю, что неудобно использовать CharSequence
в качестве ключа.
С учетом вашего ответа на один ответ: вы узнали, что именно для вас нарушает? Как и в самом деле, действительно ли «Карта» использует клавиши, отличные от 'String'? – millimoose
Millimoose, сгенерированное использование карты CharSequence для ключа. – Mellon
Сгенерированная карта по умолчанию использует Utf8, и вы можете выбрать ее для String. CharSequence - это просто интерфейс. –