So sánh chuỗi (chỉ mục) [trùng lặp]
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
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;
}
}
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
}
}
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}
}
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