比较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");
}
它打印“不相等”,但这两个数组具有相同的值。
实际上,这两个数组都是相同的,但值位置会发生变化。
我怎么知道这种数组是一样的。
答案 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");
}
}