Java Arrays.equals()
方法
原文:https://www.studytonight.com/java-util/java-arrays-equals-method
在本教程中,我们将学习 Java 中Arrays
类的equals()
方法。此方法用于检查给定的两个数组是否相等。如果两个数组都是null
或者两个数组具有相同的长度并且每个对应的元素都相同,则两个数组相等。该方法将接受两个数组,并且在比较这两个数组之后,它将基于等式返回布尔值true
或false
。
语法:
public static boolean equals(Object[] array1,Object[] aarray2)
equals()
方法重载方法列表
此表包含equals()
方法的所有重载变体。
方法 | 描述 |
---|---|
静态布尔等于(布尔[] a,布尔[] a2) | 如果两个指定的布尔值数组相等,则此方法返回 true。 |
静态布尔等于(布尔[] a,int aFromIndex,int aToIndex,布尔[] b,int bFromIndex,int bToIndex) | 如果指定范围内的两个指定布尔值数组彼此相等,则此方法返回 true。 |
静态布尔等于(字节[] a,字节[] a2) | 如果两个指定的字节数组彼此相等,则此方法返回 true。 |
静态布尔等于(字节[] a,int aFromIndex,int aToIndex,字节[] b,int bFromIndex,int bToIndex) | 如果指定范围内的两个指定字节数组彼此相等,则此方法返回 true。 |
静态布尔等于(char[] a,char[] a2) | 如果两个指定的字符数组相等,则此方法返回 true。 |
静态布尔等式(char[] a、int afromindex、int aToIndex、char[] b、int bfromindex、int bToIndex) | 如果指定范围内的两个指定字符数组彼此相等,则此方法返回 true。 |
静态布尔等于(double[] a,double[] a2) | 如果两个指定的双精度数组彼此相等,则此方法返回 true。 |
静态布尔等于(double[] a,int aFromIndex,int aToIndex,double[] b,int bFromIndex,int bToIndex) | 如果指定范围内的两个指定的双精度数组彼此相等,则此方法返回 true。 |
静态布尔等于(float[] a,float[] a2) | 如果两个指定的浮点数组彼此相等,则此方法返回 true。 |
静态布尔等于(float[] a,int aFromIndex,int aToIndex,float[] b,int bFromIndex,int bToIndex) | 如果指定范围内的两个指定浮点数组彼此相等,则此方法返回 true。 |
静态布尔等于(int[] a,int[] a2) | 如果两个指定的整数数组相等,则此方法返回 true。 |
静态布尔等式(int[] a、int afromindex、int[] b、int bfromindex、int bToIndex) | 如果指定范围内的两个指定整数数组彼此相等,则此方法返回 true。 |
静态布尔等于(long[] a,int aFromIndex,int aToIndex,long[] b,int bFromIndex,int bToIndex) | 如果指定范围内的两个指定的长数组彼此相等,则此方法返回 true。 |
静态布尔值等于(long[] a,long[] a2) | 如果两个指定的长数组相等,则此方法返回 true。 |
静态布尔等于(short[] a,int aFromIndex,int aToIndex,short[] b,int bFromIndex,int bToIndex) | 如果指定范围内的两个指定短路数组彼此相等,则此方法返回 true。 |
静态布尔等于(短[] a,短[] a2) | 如果两个指定的短路数组相等,则此方法返回 true。 |
静态布尔等于(对象[] a,int aFromIndex,int aToIndex,对象[] b,int bFromIndex,int bToIndex) | 如果指定范围内的两个指定对象数组彼此相等,则此方法返回 true。 |
静态布尔等于(对象[] a,对象[] a2) | 如果两个指定的对象数组彼此相等,则此方法返回 true。 |
静态Comparator super T> cmp) |
如果指定范围内的两个指定对象数组彼此相等,则此方法返回 true。 |
equals()方法的示例
在下面的例子中,我们有两个数组array1
和array2
。两个对应的数组元素相等,因此将返回true
。
import java.util.Arrays;
public class StudyTonight
{
public static void main(String[] args)
{
int[] array1 = new int [] {1, 2, 3, 4};
int[] array2 = new int [] {1, 2, 3, 4};
if(Arrays.equals(array1, array2))
{
System.out.println("Both Arrays Are Equal");
}
else
{
System.out.println("Both Arrays Are Not Equal");
}
}
}
两个数组相等
还有另一种equals()
重载方法,用于对数组进行切片。我们需要传递开始和结束索引来比较任何数组。
数组切片的 equals()方法示例
下面的例子与上面的例子相同,但是我们可以通过传递两个数组的开始索引 和结束索引 来分割数组。本例中,我们比较了排列 1 和排列 2 ,从索引 2 到 8 ,从 4 到 10。
import java.util.Arrays;
public class StudyTonight
{
public static void main(String[] args)
{
int[] array1 = new int [] {1, 7, 9, 11, 21, 2, 3,9, 4, 12, 47, 85, 2, 62, 14, 72, 11, 4};
int[] array2 = new int [] {1, 12, 41, 71, 22, 36, 4, 6, 12, 2, 12, 15, 16, 22, 18, 3, 4};
if(Arrays.equals(array1,2,8,array2,4,10))
{
System.out.println("Both Arrays Are Equal");
}
else
{
System.out.println("Both Arrays Are Not Equal");
}
}
}
两个数组不相等
对象数组的 equals()方法示例
下面的例子说明了如何将equals()
方法也应用于对象数组。由于这个对象不是原始数据类型,我们需要为我们的对象覆盖一个equals()
方法,在我们的例子中,我们Student
是一个对象。
import java.util.Arrays;
class Student
{
String stud_name;
int roll_no;
Student(String stud_name, int roll_no){
this.stud_name = stud_name;
this.roll_no = roll_no;
}
//overrifing equals method
public boolean equals(Object obj)
{
Student s = (Student)obj;
return (this.stud_name == s.stud_name && this.roll_no==s.roll_no);
}
}
class StudyTonight {
public static void main(String args[])
{
Student array1[][] = {
{ new Student("AAA",123), new Student("BBB",789) },
{ new Student("CCC",183), new Student("DDD",445) },
{ new Student("EEE",693), new Student("FFF",348) } };
Student array2[][] = {
{ new Student("AAA",123), new Student("BBB",789) },
{ new Student("CCC",183), new Student("DDD",445) },
{ new Student("EEE",693), new Student("FFF",348) } };
if(Arrays.deepEquals(array1, array2))
{
System.out.println("Both arrays are equal");
}
else
{
System.out.println("Both arrays are not equal");
}
}
}
两个数组不相等
equals()方法示例所有重载方法
在下面的示例中,我们实现了 equals()方法的所有重载方法。如果两个数组相等,此方法将返回 true,否则将返回 false 值。
import java.util.Arrays;
public class StudyTonight
{
public static void main(String[] args)
{
byte byteArray1[] = {5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60};
byte byteArray2[] = {35, 40, 45, 50, 55, 60,5, 10, 15, 20, 25, 30};
System.out.println("Arrays.equals(byteArray1,byteArray2): "+Arrays.equals(byteArray1,byteArray2));
System.out.println("Arrays.equals(byteArray1, 0, 5, byteArray2, 0, 5): "+Arrays.equals(byteArray1, 0, 5, byteArray2, 0, 5));
char charArray1[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k'};
char charArray2[] = {'d', 'e', 'f', 'g', 'h', 'i','a', 'b', 'c', 'd', 'e'};
System.out.println("Arrays.equals(charArray1,charArray2): "+Arrays.equals(charArray1,charArray2));
System.out.println("Arrays.equals(charArray1, 0, 5, charArray2, 0, 5): "+Arrays.equals(charArray1, 0, 5, charArray2, 0, 5));
int intArray1[] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150};
int intArray2[] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150};
System.out.println("Arrays.equals(intArray1, intArray2): "+Arrays.equals(intArray1, intArray2));
System.out.println("Arrays.equals(intArray1, 0, 5, intArray2, 0, 5): "+Arrays.equals(intArray1, 0, 5, intArray2, 0, 5));
double doubleArray1[] = {5.1, 6.2, 7.2, 8.1, 9.4, 10.2, 11.6, 12.96, 13.2, 14.25, 15.6, 16.4, 17.2};
double doubleArray2[] = {6.2, 7.2, 8.1, 9.4, 10.2, 11.6, 12.96, 13.2,5.1, 6.2, 7.2, 8.1, 9.4};
System.out.println("Arrays.equals(doubleArray1, doubleArray2): "+Arrays.equals(doubleArray1, doubleArray2));
System.out.println("Arrays.equals(doubleArray1, 0, 5, doubleArray2, 0, 5): "+Arrays.equals(doubleArray1, 0, 5, doubleArray2, 0, 5));
float floatArray1[] = {1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f, 9f, 10f};
float floatArray2[] = {1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f, 9f, 10f};
System.out.println("Arrays.equals(floatArray1, floatArray2): "+Arrays.equals(floatArray1, floatArray2));
System.out.println("Arrays.equals(floatArray1, 0, 5, floatArray2, 0, 5): "+Arrays.equals(floatArray1, 0, 5, floatArray2, 0, 5));
short shortArray1[] = {12, 14, 16, 18, 20, 2, 4, 6, 8};
short shortArray2[] = {2, 4, 6, 8, 10, 3, 12, 5, 32, 16};
System.out.println("Arrays.equals(shortArray1, shortArray2): "+Arrays.equals(shortArray1, shortArray2));
System.out.println("Arrays.equals(shortArray1, 0, 5, shortArray2, 0, 5): "+Arrays.equals(shortArray1, 0, 5, shortArray2, 0, 5));
}
}
Arrays.equals(byteArray1,byteArray2):false arrays . equals(bytearray 1,0,5,bytearray 2,0,5):false arrays . equals(chararray 1,charArray2):false arrays . equals(chararray 1,0,5,chararray 2,0,5):false arrays . equals(intarray 1,intArray2):true arrays . equals(intarray 1,0,5,intarray 2,0,5): true 【T6
结论
在本教程中,我们从 Arrays 类中学习了 equal()方法。这种方法有两种变体,一种是不切片public static boolean equals(Object[] array1,Object[] aarray2)
,另一种是切片public static boolean equals(Object[] array1,int FromIndex,int ToIndex,Object[] array2,int FromIndex,int ToIndex)
。