Thông thường bạn nên tránh đối phó với Mảng. chúng xấu xí và dẫn đến những vấn đề này. Nếu có thể sử dụng List<List<String>>
thì bạn có thể sử dụng .equals()
bình thường.
nếu bạn nhấn mạnh, bạn có thể sử dụng triển khai isequal tùy chỉnh như dưới đây. chính là để sử dụng 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();
}
}
Nguồn
2012-09-07 18:36:19
Bạn có thể cung cấp đoạn mã về những gì bạn đã thử không? – kosa
"Tôi có ngoại lệ với thông báo ** null ** ... vì một số lý do chỉ x.equals (y) hoạt động và ** không phải y.equals (x) **." Tôi tin rằng 'y' là' null', bạn có bao giờ khởi tạo nó không? – Sam
+ Sam tôi làm, ngay sau khi lớp công khai MainActivity mở rộng Hoạt động {'. – RobinJ