Я прошу прощения за создание аналогичного потока для многих, которые там сейчас, но я в основном хотел также получить представление о некоторых методах.
У меня есть список строк (может быть только 1 или более 1000)
Формат = XXX-XXXXX-XX, где каждый алфавитно-цифровой
Я пытаюсь сгенерировать уникальную строку (в настоящее время длиной 18, но, вероятно, может быть больше, чтобы не максимизировать длину файла или длину пути), которую я мог бы воспроизвести, если бы у меня был тот же список. Порядок не имеет значения; хотя мне может быть интересно, проще ли также ограничить порядок.
Мой текущий код Java выглядит следующим образом (который сегодня не удался, поэтому я здесь):
public String createOutputFileName(ArrayList alInput, EnumFPFunction efpf, boolean pHeaders) {
/* create file name based on input list */
String sFileName = "";
long partNum = 0;
for (String sGPN : alInput) {
sGPN = sGPN.replaceAll("-", ""); //remove dashes
partNum += Long.parseLong(sGPN, 36); //(base 36)
}
sFileName = Long.toString(partNum);
if (sFileName.length() > 19) {
sFileName.substring(0, 18); //Max length of 19
}
return alInput;
}
Так что, очевидно, простое добавление их не сработало так хорошо, как я понял (также думаю, что я должен взять последние 18 цифр, а не первые 18)
Существуют ли какие-либо хорошие методы (возможно, связанные с CRC), которые бы работали?
Чтобы помочь с созданием моего ключа:
Первые 3 символа почти всегда числовые и, вероятно, будут иметь много дубликатов (из 100 может быть только 10 разных начальных чисел)
Эти символы не допускаются - я, O
Никогда не будет символа, а затем числа в последних двух подмножествах альфа-символов.