我想将两个JSONArray与具有不同顺序的相同值进行比较,以便比较它。如果值放在同一索引中,则此代码可以正常工作。
String a = "[\"ABC-110101-056079-0001\",\"CBA-111101-056079-0001\",\"BCD-110101-056079-0011\"]";
String b = "[\"ABC-111101-056079-0001\",\"CBA-110101-056079-0001\",\"BCD-110101-056079-0011\"]";
JSONArray jsonArraya = null;
JSONArray jsonArrayb = null;
try {
jsonArraya = new JSONArray(a);
jsonArrayb = new JSONArray(b);
} catch (JSONException e) {
e.printStackTrace();
}
if (jsonArraya.equals(jsonArrayb)) {
Log.i("TAG",str2 is equal to str1 = " + "true");
}
答案 0 :(得分:0)
在这种情况下,最好的解决方案是首先使用Gson
将这些数组的值解析为POJO
个文件,之后创建.equals()
方法,该方法会将数组中的所有字符串添加到{ {1}}。
然后Set<>
超过一组并从另一组中删除所有当前项并删除相同的元素。如果最后在第二组中没有元素,则两个对象都是相同的。
答案 1 :(得分:0)
您可以将每个数组的元素添加到SortedSet
实例并比较它们:
SortedSet<Object> seta = new TreeSet<>();
jsonArraya.forEach(seta::add);
SortedSet<Object> setb = new TreeSet<>();
jsonArrayb.forEach(setb::add);
Log.i("TAG", "str2 is equal to str1 = " + seta.equals(setb));