У меня есть проблема, которую я пытался выяснить.Я пытаюсь найти количество пар записей (каждая строка - одна запись), содержащих одинаковые символы.
Мой подход состоял в том, чтобы прочитать каждую строку, отсортировать строку и затем сравнить с остальными.Проблема в том, что я не получаю каждую пару дубликатов.
Вот мой код:
public static int countduplicates(String dbfilename) throws IOException {
int counter = 0;
Set<String> checker;
BufferedReader list = new BufferedReader( new FileReader( dbfilename ) );
String line;
TreeMap<String,Integer> map = new TreeMap<>();
while ( (line = list.readLine()) != null )
{
String newline= sorted(line);
System.out.println("Sorted: " + newline);
if (!map.containsKey(newline))
{
map.put(newline, 0);
}
else {
counter++;
map.put(newline, 1);
}
}
list.close();
return counter;
}
}
Я понимаю, почему он не работает, потому что, например, если у меня есть входной файл, например:
BCDEFGH
ABACD
BDCEF
BDCAA
DBACA
DABACA
DABAC
Сортировка Iполучит
BCDEFGH
AABCD
BCDEF
AABCD
AABCD (*)
AAABCD
AABCD
Но получит только 3 вместо 6, потому что (*) только добавит 1 к счетчику, когда он должен добавить 2. Может кто-нибудь из вас подскажет, как продолжитьэта проблема?