比较java中的两个数组

时间:2014-02-15 13:53:11

标签: java arrays

比较java中的两个字符串我使用下面的代码

String ary[]={"man","john","su"};
String ary1[]={"john","man","su"};

if(Arrays.equals(ary,ary1)) {
    System.out.println("equal");
} else {
    System.out.println("not equal");
}

它打印“不相等”,但这两个数组具有相同的值。

实际上,这两个数组都是相同的,但值位置会发生变化。

我怎么知道这种数组是一样的。

4 个答案:

答案 0 :(得分:0)

从我看到你只是试着看看它们是否相等,如果这是真的,那就去做这样的事情:

boolean areEqual = Arrays.equals(Arrays.sort(arr1), Arrays.sort(arr2));

这是执行此操作的标准方法。

这样做是因为像ZouZou所述并且在文档中标明:

  

“如果两个数组包含相同的数组,则认为两个数组相等   元素的数量,以及两者中所有相应的元素对   数组是相等的。换句话说,如果它们包含两个数组则相等   相同顺序的相同元素“

答案 1 :(得分:0)

使用集:

if (ary.length == ary1.length && new HashSet<>(Arrays.asList(ary)).equals(new HashSet<>(Arrays.asList(ary1)))

测试代码:

String ary[] = { "man", "john", "su" };
String ary1[] = { "john", "man", "su" };
Set<String> set1 = new HashSet<>(Arrays.asList(ary));
Set<String> set2 = new HashSet<>(Arrays.asList(ary1));
System.out.println(ary.length == ary1.length && set1.equals(set2));

输出:

true

答案 2 :(得分:0)

String ary[] = { "man", "john", "su" };     
String ary1[] = { "man", "john", "su" };
boolean check = true;       

for(int i=0; i<ary.length; i++)
{
  for(int j=0; j<ary1.length; j++)
  {
    if(i == j)
    {
        if(!ary[i].equals(ary1[j]))
        {
            check = false;
        }
    }   
  }
}

此代码可能对您有所帮助。祝你好运。

答案 3 :(得分:0)

试试这个它会起作用。

    String ary[]={"man","john","su"};
    String ary1[]={"john","man","su"};
    boolean isEqual = true;
    if(ary.length != ary1.length) {
        System.out.println("not equal");
    } else {
        int countEquals = 0;
        ArrayList<String> wordList = new ArrayList(Arrays.asList(ary1) );
        for (String str : ary) {
            if (wordList.contains(str)) {
                countEquals++;
                wordList.remove(str);
            } else {
                isEqual = false;
                System.out.println("not equal");
                break;
            }
        }
        if (isEqual) {
            System.out.println("equal");
        }
    }