So sánh chuỗi (chỉ mục) [trùng lặp]

Jan 12 2021

làm thế nào để so sánh hai mảng với chỉ mục chính xác chẳng hạn

String[] test1 = {"a","b","c","d"};
String[] test2 = {"a","b","c",""};

Tôi đã thử cái này

for (int i = 0; i < test1.length; i++) {
for (int j =  i; j < test2.length; j++) if (i==j)  if (i == j && test2[j] == "" ) {do stuff}
} 

// but always give true

bây giờ nếu so sánh bắt đầu ở chỉ mục 0 cho test1 thì nó chỉ nên được so sánh với chỉ mục 0 cho test2 Tôi muốn tìm chỉ mục trống (ví dụ: chỉ mục 3 cho test2 có liên quan đến chỉ số 3 test1) và thực hiện một số thứ

Mình đọc nhiều nhưng gặp chút khó khăn, cảm ơn trước.

Trả lời

Pieter12345 Jan 12 2021 at 22:04

Theo những gì tôi hiểu, bạn muốn so sánh hai mảng có thể không có cùng kích thước và nếu chúng không có cùng kích thước thì chỉ so sánh với kích thước ngắn nhất? Bạn có thể làm điều gì đó như sau:

boolean equals = true;
for(int i = 0; i < test1.length && i < test2.length; i++) {
    if(!test1[i].equals(test2[i])) {
        equals = false;
        break;
    }
}
Spectric Jan 12 2021 at 22:02

Sử dụng .equals()để so sánh các Chuỗi. ==được sử dụng để so sánh các nguyên thủy.

Cũng không cần 2 vòng lặp.

for(int i = 0; i < test1.length; i++){
    if(test1[i].equals("")||test2[i].equals(""){
        //Do something
    }
}
pabloespinosa12 Jan 12 2021 at 22:03

Khi bạn so sánh các chuỗi trong Java, bạn phải sử dụng EQUALS vì chúng là các đối tượng. Ngoài ra, không có điểm nào trên hai vòng lặp. Chỉ cần thử điều này:

for (int i = 0; i < test1.length; i++) {
    if (test2[i].equals("") ) {do stuff}
}
NehaK Jan 12 2021 at 22:52

Sử dụng deepEquals () của Arrays.java:

  import java.util.Arrays;

  String[][] s1 =
        {
            {"A", "B", "C"},
            {"X", "Y", "Z"}
        };
 
 String[][] s2 =
        {
            {"A", "B", "C"},
            {"X", "Y", "Z"}
        };
 
 System.out.println("deepEquals() returns " + Arrays.deepEquals(s1, s2));

Đầu ra: deepEquals () trả về true