Есть ли способ сравнивать строки, не обращая внимания на порядок объектов в серии запятых? - PullRequest
1 голос
/ 11 июля 2020

Например, если была строка "a, b, c, d", можно ли установить другую строку, равную этой, если другая строка "b, c, d, a"?

Ответы [ 2 ]

4 голосов
/ 11 июля 2020

Предполагая, что вам не нужно беспокоиться о дубликатах, вы можете преобразовать обе строки CSV в наборы, а затем сравнить:

String input1 = "a, b, c, d";
String input2 = "b, c, d, a";
Set<String> set1 = new HashSet<>(Arrays.asList(input1.split(",\\s*")));
Set<String> set2 = new HashSet<>(Arrays.asList(input2.split(",\\s*")));

if (set1.equals(set2)) {
    System.out.println("EQUAL");
}
else {
    System.out.println("NOT EQUAL");
}
1 голос
/ 11 июля 2020

Строка «a, b, c, d» полностью отличается от строки «b, c, d, a». Они никогда не могут быть оценены как «равные».

Вы CAN , однако, анализируете строку. И сохраните элементы «a», «b», «c» и «d» в Collection , таком как List или Set. TreeSet может быть хорошим выбором.

По желанию вы также можете написать Comparitor для своей коллекции.

Дело в том, что вы не можете оценить струны как есть. Сначала вы должны выбрать подходящую структуру данных для содержимого строки. Только после этого вы сможете оценить и сравнить значения , извлеченные из строки.

...