Java Arrays.mismatch()方法

原文:https://www.studytonight.com/java-util/java-arrays-mismatch-method

在本教程中,我们将学习 Java 中的一种方法mismatch()。此方法返回数组的第一个不匹配的元素索引。它用于检查两个数组是否包含相似的元素,并在出现不匹配时发出通知。让我们看看它的语法和理解这个方法的例子。

句法

mismatch(datatype[] array1, datatype[] array2)

此方法返回两个数组的第一个不匹配元素索引。如果两个数组相同,那么它将返回-1。

mismatch()方法重载方法列表

此表包含mismatch()方法的所有重载变体。

方法 描述
静态 int 不匹配(布尔[] a,布尔[] b) 此方法查找并返回两个布尔数组之间第一个不匹配的索引,否则,如果没有发现不匹配,则返回-1。
静态 int mismatch(boolean[] a、int afromindex、int aToIndex、boolean[] b、int bfromindex、int bToIndex) 此方法查找并返回指定范围内两个布尔数组之间第一个不匹配的相对索引,否则,如果未找到不匹配,则返回-1。
静态 int 不匹配(字节[] a,字节[] b) 此方法查找并返回两个字节数组之间第一个不匹配的索引,否则,如果没有发现不匹配,则返回-1。
静态 int mismatch(字节[] a、int afromindex、int aToIndex、字节[] b、int bfromindex、int bToIndex) 此方法查找并返回指定范围内两个字节数组之间第一个不匹配的相对索引,否则,如果没有发现不匹配,则返回-1。
静态 int 不匹配(char[] a,char[] b) 此方法查找并返回两个字符数组之间第一个不匹配项的索引,否则,如果没有找到不匹配项,则返回-1。
静态 int mismatch(char[] a、int afromindex、int aToIndex、char[] b、int bfromindex、int bToIndex) 此方法查找并返回指定范围内两个字符数组之间第一个不匹配的相对索引,否则,如果未找到不匹配,则返回-1。
静态 int 不匹配(double[] a,double[] b) 此方法查找并返回两个双数组之间第一个不匹配项的索引,否则,如果没有找到不匹配项,则返回-1。
静态 int 不匹配(double[] a,int aFromIndex,intaToIndex、double[] b、int bfromindex、int btoindex) 此方法查找并返回指定范围内两个双数组之间第一个不匹配的相对索引,否则,如果没有发现不匹配,则返回-1。
静态 int 不匹配(浮点[] a,浮点[] b) 此方法查找并返回两个浮点数组之间第一个不匹配的索引,否则,如果没有发现不匹配,则返回-1。
静态 int 不匹配(float[] a,int aFromIndex,intaToIndex、float[] b、int bfromindex、int btoindex) 此方法查找并返回指定范围内两个浮点数组之间第一个不匹配的相对索引,否则,如果未找到不匹配,则返回-1。
静态 int 不匹配(int[] a,int[] b) 此方法查找并返回两个 int 数组之间第一个不匹配项的索引,否则,如果没有找到不匹配项,则返回-1。
静态 int mismatch(int[] a、int afromindex、int[] b、int bfromindex、int bToIndex) 查找并返回指定范围内两个 int 数组之间第一个不匹配项的相对索引,否则,如果没有找到不匹配项,则返回-1。
静态 int mismatch(long[] a、int afromindex、int aToIndex、long[] b、int bfromindex、int bToIndex) 此方法查找并返回指定范围内两个长数组之间第一个不匹配的相对索引,否则,如果未找到不匹配,则返回-1。
静态 int 不匹配(长[] a,长[] b) 此方法查找并返回两个长数组之间第一个不匹配的索引,否则,如果没有找到不匹配,则返回-1。
静态 int mismatch(short[] a、int afromindex、int aToIndex、short[] b、int bfromindex、int bToIndex) 此方法查找并返回指定范围内两个短数组之间第一个不匹配的相对索引,否则,如果没有发现不匹配,则返回-1。
静态 int 不匹配(短[] a,短[] b) 此方法查找并返回两个短数组之间第一个不匹配的索引,否则,如果没有发现不匹配,则返回-1。
静态 int 不匹配(对象[] a,int aFromIndex,int aToIndex,对象[] b,int bFromIndex,int bToIndex) 此方法查找并返回指定范围内两个对象数组之间第一个不匹配的相对索引,否则,如果未找到不匹配,则返回-1。
静态 int 不匹配(对象[] a,对象[] b) 此方法查找并返回两个对象数组之间第一个不匹配的索引,否则,如果没有找到不匹配,则返回-1。
静态〔t0〕int mismatch(t[]a、int aFromIndex、int aToIndex、T[] b、int bfromindex、int bToIndex、比较者〔t1〕CMP) 此方法查找并返回指定范围内两个对象数组之间第一个不匹配的相对索引,否则,如果未找到不匹配,则返回-1。
静态 int 不匹配(T[] a,T[] b,Comparator super T> cmp) 此方法查找并返回两个对象数组之间第一个不匹配的索引,否则,如果没有找到不匹配,则返回-1。

示例:数组mismatch()方法

在下面给出的代码中,mismatch()方法接收两个参数,可以看到有两个数组,从索引0 到索引2 的前三个元素在两个数组中都是相同的,但是在索引3处,20array1 中的元素,80array2中的元素,因此3 是我们的数组不匹配的第一个索引。

import java.util.Arrays;
class StudyTonight { 
    public static void main(String args[]) 
    { 
        int array1[] = { 5, 10, 15, 20, 25 }; 
        int array2[] = { 5, 10, 15, 80, 100 }; 
        int index = Arrays.mismatch(array1, array2);
        System.out.println("mismatched index for both arrays is: "+index); 
    } 
}

两个数组的不匹配索引为:3

示例:特定范围的数组不匹配

在下面的程序中,为了检查两个数组的元素所在的第一个索引,我们传递了两个数组及其范围。其中array1 从指数25 考虑,array2 从指数38考虑。

import java.util.Arrays;
class StudyTonight { 
    public static void main(String args[]) 
    { 
        int array1[] = { 15, 4, 22, 20, 45, 37, 18, 14, 12}; 
        int array2[] = { 7, 10, 11, 20, 45, 37, 18, 14, 12}; 
        int index = Arrays.mismatch(array1, 3, 5, array2, 3, 8 );
        System.out.println("mismatched index for both arrays is: "+index); 
    } 
}

两个数组的不匹配索引为:2

示例:数组mismatch()重载方法

此方法重载以下方式,以支持不同数据类型的数组和数组的不同范围。

import java.util.Arrays;
public class StudyTonight 
{
    public static void main(String[] args) 
    {
        //Example of static int mismatch(boolean[] a, boolean[] b)
        boolean[] boolArray1={true, false, true, false, true, true};
        boolean[] boolArray2={true, false, false, true, true, true};
        int Index = Arrays.mismatch(boolArray1, boolArray2);
        System.out.println("boolArray1 and boolArray2 mismatched at index: "+Index);

        //Example of static int mismatch(boolean[] a, int aFromIndex, int aToIndex, boolean[] b, int bFromIndex, int bToIndex)
        Index = Arrays.mismatch(boolArray1, 2, 4, boolArray2, 3, 5);
        System.out.println("boolArray1 and boolArray2 mismatched at index: "+Index);

        //Example of static int compare(byte[] a, byte[] b)
        byte[] byteArray1={4, 1, 8, 2, 2, 3, 16, 4, 4};
        byte[] byteArray2={4, 1, 8, 2, 2, 3, 16, 4, 4};
        Index = Arrays.mismatch(byteArray1, byteArray2);
        System.out.println("byteArray1 and byteArray2 mismatched at index: "+Index);

        Index = Arrays.mismatch(byteArray1, 2, 4, byteArray2, 3, 5);
        System.out.println("byteArray1 and byteArray2 mismatched at index: "+Index);

        //Example of static int mismatch(char[] a, char[] b)
        char[] charAarray1={'a', 'e', 'i', 'o', 'u'};
        char[] charAarray2={'a', 'e', 'p', 'q', 'r'};
        Index = Arrays.mismatch(charAarray1, charAarray2);
        System.out.println("charAarray1 and charAarray2 mismatched at index: "+Index);

        //Example of static int mismatch(char[] a, int aFromIndex, int aToIndex, char[] b, int bFromIndex, int bToIndex)
        Index = Arrays.mismatch(charAarray1, 0, 4, charAarray2, 0, 4);
        System.out.println("charAarray1 and charAarray2 mismatched at index: "+Index);

        //Example of static int mismatch(double[] a, double[] b)
        double[] doubleArray1={12, 3, 17, 5, 8, 17, 2, 37};
        double[] doubleArray2={12, 3, 17, 5, 8, 17, 2, 50};
        Index = Arrays.mismatch(doubleArray1, doubleArray2);
        System.out.println("doubleArray1 and doubleArray2 mismatched at index: "+Index);

        //Example of static int mismatch(double[] a, int aFromIndex, int aToIndex, double[] b, int bFromIndex, int bToIndex)
        Index = Arrays.mismatch(doubleArray2, 0, 4, doubleArray2, 0, 4);
        System.out.println("doubleArray1 and doubleArray2 mismatched at index: "+Index);     

        //Example of static int mismatch(float[] a, float[] b)
        float[] floatArray1={4.12f, 7.3f, 8.17f, 1.5f, 7.8f, 4.17f, 3.2f, 6.37f};
        float[] floatArray2={4.12f, 8.3f, 5.17f, 6.5f, 4.8f, 6.17f, 2.2f, 5.37f};
        Index = Arrays.mismatch(floatArray1, floatArray2);
        System.out.println("floatArray1 and floatArray2 mismatched at index: "+Index);

        //Example of static int mismatch(float[] a, int aFromIndex, int aToIndex, float[] b, int bFromIndex, int bToIndex)
        Index = Arrays.mismatch(floatArray1, 0, 4, floatArray2, 0, 4);
        System.out.println("floatArray1 and floatArray2 mismatched at index: "+Index);    

        //Example of static int mismatch(int[] a, int[] b)
        int[] intArray1 ={5, 6, 7, 10, 17, 7, 1, 4};        
        int[] intArray2 ={5, 6, 7, 10, 27, 5, 7, 8};        
        Index = Arrays.mismatch(intArray1, intArray2);
        System.out.println("intArray1 and intArray2 mismatched at index: "+Index);

        //Example of static int mismatch(float[] a, int aFromIndex, int aToIndex, float[] b, int bFromIndex, int bToIndex)
        Index = Arrays.mismatch(intArray1, 0, 4, intArray2, 0, 4);
        System.out.println("intArray1 and intArray2 mismatched at index: "+Index);    

        //Example of static int mismatch(long[] a, long[] b)
        long[] longArray1={4,54,56,17,51,84,5,28,33,9};
        long[] longArray2={4,54,16,4,51,12,5,28,8,19};
        Index = Arrays.mismatch(longArray1, longArray1);
        System.out.println("longArray1 and longArray2 mismatched at index: "+Index);

        //Example of static int mismatch(short[] a, int aFromIndex, int aToIndex, short[] b, int bFromIndex, int bToIndex)
        Index = Arrays.mismatch(longArray1, 0, 4, longArray1, 0, 4);
        System.out.println("longArray1 and longArray2 mismatched at index: "+Index);    

        //Example of static int mismatch(short[] a, short[] b)
        short[] shortArray1={5, 8, 6, 4, 2, 0};
        short[] shortArray2={5, 2, 3, 4, 5, 6};
        Index = Arrays.mismatch(shortArray1, shortArray2);
        System.out.println("shortArray1 and shortArray2  mismatched at index: "+Index);

        //Example of static int mismatch(short[] a, int aFromIndex, int aToIndex, short[] b, int bFromIndex, int bToIndex)
        Index = Arrays.mismatch(shortArray1, 0, 4, shortArray2, 0, 4);
        System.out.println("shortArray1 and shortArray2 mismatched at index: "+Index);    
    }
}

boolArray1 和 boolArray2 在索引处不匹配:2 boolArray1 和 boolArray2 在索引处不匹配:1 字节数组 1 和字节数组 2 在索引处不匹配:-1 字节数组 1 和字节数组 2 在索引处不匹配:0 字符数组 1 和字符数组 2 在索引处不匹配:2 字符数组 1 和字符数组 2 在索引处不匹配:2 双数组 1 和双数组 2 在索引处不匹配:7 双数组 1 和双数组 2 在索引处不匹配 数组 1 和数组 2 在索引处不匹配:4 数组 1 和数组 2 在索引处不匹配:-1 长数组 1 和长数组 2 在索引处不匹配:-1 长数组 1 和长数组 2 在索引处不匹配:-1 短数组 1 和短数组 2 在索引处不匹配:1 短数组 1 和短数组 2 在索引处不匹配:1

结论:

在本文中,我们学习了 mismatch()方法如何使用不同类型的数组来查找元素不匹配的两个数组的第一个索引,如果两个数组相同,那么这个方法将返回-1。我们希望在一个特定的范围内比较两个数组,这样我们就可以使用重载方法对两个数组的开始索引和结束索引进行切片。