有没有办法比较字符串而不考虑一系列逗号中对象的顺序?
Is there a way to compare strings disregarding the order of objects in a series of commas?
例如,如果有一个字符串 "a, b, c, d"
,如果另一个字符串是 "b, c, d, a"
,是否可以将另一个字符串设置为等于这个字符串?
假设您不必担心重复,您可以将两个 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");
}
字符串“a,b,c,d”与字符串“b,c,d,a”完全不同。他们永远不能被评估为“平等”。
你可以,但是,解析字符串。并将元素“a”、“b”、“c”和“d”保存到一个Collection, such as a List or a Set. TreeSet中可能是一个不错的选择。
您也可以选择为 collection 写一个 Comparitor。
重点是您无法评估字符串 as-is。您必须首先为字符串的内容选择合适的数据结构。只有这样你才能评估和比较从字符串中解析出来的值。
例如,如果有一个字符串 "a, b, c, d"
,如果另一个字符串是 "b, c, d, a"
,是否可以将另一个字符串设置为等于这个字符串?
假设您不必担心重复,您可以将两个 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");
}
字符串“a,b,c,d”与字符串“b,c,d,a”完全不同。他们永远不能被评估为“平等”。
你可以,但是,解析字符串。并将元素“a”、“b”、“c”和“d”保存到一个Collection, such as a List or a Set. TreeSet中可能是一个不错的选择。
您也可以选择为 collection 写一个 Comparitor。
重点是您无法评估字符串 as-is。您必须首先为字符串的内容选择合适的数据结构。只有这样你才能评估和比较从字符串中解析出来的值。