Прежде всего, это будет работать.Издержки equals()
на двух ByteBuffer
с определенно будут выше, но, возможно, их недостаточно, чтобы компенсировать преимущества отсутствия десериализации (хотя я не совсем уверен, будет ли это такой большой проблемой).
Я почти уверен, что асимптотически производительность будет одинаковой, но более эффективное решение - отсортировать массив, затем линейно пройти по нему и проверить последовательные элементы на равенство.
Например, предположим, что ваши буферы содержат следующее:
1 2 5 1
Сортировка:
1 1 2 5
Как только вы начинаете итерацию, вы получаете ar[0].equals(ar[1])
, и вы знаете, что это дубликаты.Просто продолжай в том же духе до n-1
.