котором в виде байтиков лежит строка в Utf-8.
Есть ли какой-то готовый (или полуготовый) способ получить совместимые с java.util.String реализации hashCode/equals, не разбирая всю эту строку в отдельный инстанс String?
Не очень понял задачу, хотите получить хешкод стринга, но не читая сам стринг с ByteBuf?
Да, не хочу делать аллокацию промежуточного стринга Хочу сразу сходить в мапу и достать оттуда интернированный (понятно что тут придется пошаманить с обертками которые переопределят hashCode/equals для ключа на лукапе, но я тут все контролирую)
мне в принципе подойдет какой-нибудь конвертер utf8->utf16 главное чтобы он мне utf16 налил в тот буфер который я ему дам, а не аллоцировал
Можно вместо стринга в ByteBuf кидать сразу его хешкод, но тут могут быть проблемы, если вдруг что-то меняли в вычислении хеша на разных версиях Java
>меняли в вычислении хеша на разных версиях Java это я как раз не боюсь короче говоря, мне нужен неаллоцирующий перекодировщик utf8->utf16 остальное дело техники
В DataInputStream есть код, который из byte[] в UTF создает строчку
а скопировать код из стдлиб utf8->utf16, немного поменяв его, чтобы сделать неаллоцирующим - большой объем работы? или не хочется этот код поддерживать
да не хочется возиться просто и поддерживать но видимо придется я подумываю уже скопировать из com.google.protobuf.Utf8.UnsafeProcessor#decodeUtf8Direct и адаптировать под netty buf
а насколько кстати часто там будут лежать отличные от ascii символы? если это супер редкий кейс, то можно только ascii покрыть всего в несколько строк кода, и сделать фолбек на String, в случае utf8 символов
заранее не знаю — произольный пользовательский инпут но здравый смысл подсказывает, что как минимум 80% будет latin1 хорошая идея — благодарю
Обсуждают сегодня