2016-11-19 77 views
0

我想比较两个具有相同值和不同顺序的JSONArray,如何比较它。如果值放在同一个索引中,此代码工作正常。在Android中比较两个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

在这种情况下的最佳解决方案是解析首先使用GsonPOJO文件这些阵列的值,之后,创建.equals()方法,这将增加所有字符串从数组Set<>。 然后iterate在一个集合上,并从另一个集合中删除所有当前项目并删除相同的元素。如果第二组中没有元素,则两个对象都是相同的。

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));