2016-11-19 2 views
0

Я хочу сравнить два JSONArray с тем же значением с другим порядком, как сравнить его. Этот код работает нормально, если значение находится в одном индексе.Сравнение двух JSONArray в Android

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 Into POJO файлов, после чего создать .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)); 
Смежные вопросы