Zazwyczaj należy unikać czynienia z tablicami. są brzydcy i prowadzą do tego rodzaju problemów. Jeśli to możliwe, użyj List<List<String>>
, aby móc normalnie korzystać z .equals()
.
jeśli nalegasz, możesz użyć niestandardowej implementacji, jak poniżej. kluczem jest użycie Arrays.equals()
public class DemoEquals {
List<String[]> listOne = (List<String[]>) Arrays.asList(new String[]{"one1", "one2"}, new String[]{"two1"});
List<String[]> listOneOne = (List<String[]>) Arrays.asList(new String[]{"one1", "one2"}, new String[]{"two1"});
List<String[]> listTwo = (List<String[]>) Arrays.asList(new String[]{"2one1", "2one2"}, new String[]{"2two1"});
private boolean isEqual(List<String[]> list1, List<String[]> list2) {
if (list1.size() != list2.size()) return false;
for (int i = 0; i < list1.size(); i++) {
if (!Arrays.equals(list1.get(i), list2.get(i))) return false;
}
return true;
}
@SuppressWarnings("unchecked")
private void isEqual() {
//prints true
System.out.println(isEqual(Collections.EMPTY_LIST, Collections.EMPTY_LIST));
//prints true
System.out.println(isEqual(listOne, listOne));
//prints true
System.out.println(isEqual(listOne, listOneOne));
//prints false
System.out.println(isEqual(listOne, listTwo));
//prints false
System.out.println(isEqual(listOne, Collections.EMPTY_LIST));
}
public static void main(String[] args) {
new DemoEquals().isEqual();
}
}
Czy możesz podać fragment kodu wypróbowanego? – kosa
"Otrzymałem wyjątek z komunikatem ** null ** ... z jakiegoś powodu działa tylko x.equals (y), a ** not y.equals (x) **." Wierzę, że 'y' jest' null', czy kiedykolwiek go zainicjowałeś? – Sam
+ Sam robię, zaraz po 'publicznej klasie MainActivity rozszerza działalność {'. – RobinJ