Я пытаюсь найти способ удалить повторяющиеся записи из байтового массива 'byte [] []', возвращенный как новый байт [] [] '. Код, как у меня сейчас, кажется, работает, но выглядит очень уродливо, и мне интересно, есть ли у кого-нибудь лучшие трюки, чтобы улучшить его. Функция я создал выглядит следующим образом:Есть ли более чистый способ уменьшить этот многомерный массив байтов, чтобы удалить дубликаты?
private byte[][] filterByteArrayValues(final byte[][] values)
{
final ArrayList<byte[]> listOfBytes = new ArrayList<byte[]>();
final ArrayList<String> listOfCrc32 = new ArrayList<String>();
for (final byte[] value : values)
{
final String crc = this.generateCheckSum(value);
if (!listOfCrc32.contains(crc))
{
listOfCrc32.add(crc);
listOfBytes.add(value);
}
}
final byte[][] output = new byte[listOfBytes.size()][];
for (int i = 0; i < listOfBytes.size(); i++)
{
output[i] = listOfBytes.get(i);
}
return output;
}
Мое самое большое сожаление, как я восстановление "байт [] [] для возвращаемого значения. Я почти уверен, что есть лучший способ, но я не могу думать об этом. Также я нацелен на JRE1.8.
CRC может давать ложные срабатывания: списки разных байтов, которые производят одну и ту же контрольную сумму. – biziclop
Хм .. не думал об этом. Я посмотрю на это спасибо @biziclop – JRSofty