可以通过以下方法来实现,制作一个使用TreeSet实现的字符串集合,这样排序就可以内置处理了。只需要将set的两个字符串进行简单转换,并使用equals方法进行比较。
尝试下面的代码:
String str1 = "[0.7419,0.7710,0.2487]";
String str2 = "[\"0.7710\",\"0.7419\",\"0.2487\"]";
String jsonArray = new JSONArray(str2).toString();
Set<String> set1 = new TreeSet<String>(Arrays.asList(str1.replace("[", "").replace("]", "").split(",")));
Set<String> set2 = new TreeSet<String>(Arrays.asList(jsonArray.replace("[", "").replace("]", "").replace("\"", "").split(",")));
if(set1.equals(set2)){
System.out.println(" str1 and str2 are equal");
}
在上面的代码中,我借助了
jsonArray 来删除
"\"字符。
注意:
但是,如果一个字符串中有重复元素并且另一个字符串中的数字不同,则此方法将不起作用,因为集合不会保留重复项。
尝试使用保留重复元素的
列表来解决问题。
String str1 = "[0.7419,0.7710,0.2487]";
String str2 = "[\"0.7710\",\"0.7419\",\"0.2487\"]";
String jsonArray = new JSONArray(str2).toString();
List<String> list1=new ArrayList<String>(Arrays.asList(str1.replace("[", "").replace("]", "").split(",")));
List<String> list2=new ArrayList<String>(Arrays.asList(jsonArray.replace("[", "").replace("]", "").replace("\"", "").split(",")));
Collections.sort(list1);
Collections.sort(list2);
if(list1.equals(list2)){
System.out.println("str1 and str2 are equal");
}
Set<Double>
(至少您是这么说的)。因此,请将它们解析为Set<Double>
,然后进行比较。 - M. Prokhorov