数组A[i],数组B[j],其中i和j都是number类型,含义是某SP的接入码如数组A中的接入码顺序为:
1
2
3
如数组B中的接入码顺序为:
2
3
4现在需要写一个循环函数来比较数组A和数组B中的接入码,功能是:只要A和B中的接入码不是完全一样(接入码的排列顺序不一样除外,如A是排列为1,2,3 B的排列为3,2,1),则函数返回flase,否则返回true,还请达人提供一个这样的函数,谢谢:)
1
2
3
如数组B中的接入码顺序为:
2
3
4现在需要写一个循环函数来比较数组A和数组B中的接入码,功能是:只要A和B中的接入码不是完全一样(接入码的排列顺序不一样除外,如A是排列为1,2,3 B的排列为3,2,1),则函数返回flase,否则返回true,还请达人提供一个这样的函数,谢谢:)
import java.util.Arrays;public class Test { public static void main(String[] args) throws Exception {
Number[] n1 = new Number[] { 1, 2, 3 };
Number[] n2 = new Number[] { 3, 2, 1 };
System.out.println(equals(n1, n2));
n1 = new Number[] { 1, 2, 3 };
n2 = new Number[] { 3, 2, 1, 4 };
System.out.println(equals(n1, n2));
} public static boolean equals(Number[] n1, Number[] n2) {
Arrays.sort(n1);
Arrays.sort(n2);
return Arrays.equals(n1, n2);
}
}
比较简单的实现了一个,如果要求高效率,需要知道大致数据量来设计优化的算法
然后:
return a.containsAll(b) && b.containsAll(a);
List<Integer> b = Arrays.asList(B);
return a.containsAll(b) && b.containsAll(a);
如果你要用我写的那样的方法,定义的时候不能用基本类型:
int[] A = {1,2,3,4};
这样是不行的。
必须写成:
Integer[] A = {1,2,3,4};
或者:
String[] A = {"1","2","3","4"};
List<String> a = Arrays.asList(A);
Arrays.sort(a);
Arrays.sort(b);
return Arrays.equals(a, b);
}
因为都忽略了重复的元素。
看来需要再用set包装一下才行。
应该没问题吧?
public static void main(String args[]) { Integer[] a = { 1, 2, 3, 4 };
Integer[] b = { 3, 2, 4, 1, 4 };
List<Integer> list1 = Arrays.asList(a);
List<Integer> list2 = Arrays.asList(b);
System.out.println(list1.containsAll(list2) && list2.containsAll(list1));
}
只不过必须用Integer来包装。
{1,2,2,3}
{1,2,3,3}
这样的数据吧
加个长度判断也不行的