Java中两个整数数组的比较
我试图编写代码来比较两个数组。在第一个数组中,我放置了自己的数字,但第二个数组从输入文件中获取数字。此数组的大小由文件中的第一个数字决定,而第一个数组的大小始终为10。两个数组的长度以及数字必须相同 我的代码如下:Java中两个整数数组的比较,java,arrays,compare,Java,Arrays,Compare,我试图编写代码来比较两个数组。在第一个数组中,我放置了自己的数字,但第二个数组从输入文件中获取数字。此数组的大小由文件中的第一个数字决定,而第一个数组的大小始终为10。两个数组的长度以及数字必须相同 我的代码如下: public static void compareArrays(int[] array1, int[] array2) { boolean b = false; for (int i = 0; i < array2.length; i++) {
public static void compareArrays(int[] array1, int[] array2) {
boolean b = false;
for (int i = 0; i < array2.length; i++) {
for (int a = 0; a < array1.length; a++) {
if (array2[i] == array1[a]) {
b = true;
System.out.println("true");
} else {
b = false;
System.out.println("False");
break;
}
}
}
}
publicstaticvoidcomparararrays(int[]array1,int[]array2){
布尔b=假;
for(int i=0;i
尽管有一些简单的东西,比如.equals
,但我想指出您在代码中犯的两个错误。第一:当你遍历数组时,你说b
是true
还是false
。然后,由于for循环,再次开始检查。但是每次你给b
一个值。因此,无论发生什么情况,设置为的值b
始终是最后一个for循环的值。下次,设置布尔值b=true
,如果等于true
,则不执行任何操作,如果等于false
,b=false
其次,您现在正在用array2
中的每个值检查array1
中的每个值。如果我理解正确,您只需要检查数组中相同位置的值,这意味着您应该删除第二个for循环,并按如下方式进行检查:If(array2[I]==array1[I])
。那么您的代码也应该可以正常工作
您的代码的工作方式如下:
public static void compareArrays(int[] array1, int[] array2) {
boolean b = true;
for (int i = 0; i < array2.length; i++) {
if (array2[i] == array1[i]) {
System.out.println("true");
} else {
b = false;
System.out.println("False");
}
}
return b;
boolean areEqual = Arrays.equals(arr1, arr2);
publicstaticvoidcomparararrays(int[]array1,int[]array2){
布尔b=真;
for(int i=0;i
}
但正如其他人所说,更简单的是:array.equals(ary1,ary2) 如果您知道数组的大小相同,那么可以证明排序和比较的速度更快
Arrays.sort(array1)
Arrays.sort(array2)
return Arrays.equals(array1, array2)
如果不想更改数组中数据的顺序,请先执行
System.arraycopy
。从我看到的情况来看,您只需尝试查看它们是否相等,如果这是true
,请执行以下操作:
public static void compareArrays(int[] array1, int[] array2) {
boolean b = true;
for (int i = 0; i < array2.length; i++) {
if (array2[i] == array1[i]) {
System.out.println("true");
} else {
b = false;
System.out.println("False");
}
}
return b;
boolean areEqual = Arrays.equals(arr1, arr2);
这是做这件事的标准方法
请注意,从JavaDoc:
如果两个数组包含相同的数字,则认为两个数组相等
以及两个数组中所有对应的元素对
他们是平等的。换句话说,如果两个数组包含
相同的元素以相同的顺序排列
很抱歉遗漏了这一点。使用
数组.equals(ary1,ary2)代码>//返回布尔值
编辑
您也可以使用Arrays.deepEquals(ary1,ary2)
来比较2D数组
还要检查数组.equals(ar1,ar2)
和数组.deepEquals(ar1,ar2)
编辑2
如果您不想使用这些库方法,那么可以像这样轻松地实现您的方法:
public static boolean ArrayCompare(int[] a, int[] a2) {
if (a==a2) // checks for same array reference
return true;
if (a==null || a2==null) // checks for null arrays
return false;
int length = a.length;
if (a2.length != length) // arrays should be of equal length
return false;
for (int i=0; i<length; i++) // compare array values
if (a[i] != a2[i])
return false;
return true;
}
公共静态布尔数组比较(int[]a,int[]a2){
if(a==a2)//检查相同的数组引用
返回true;
if(a==null | | a2==null)//检查null数组
返回false;
int length=a.length;
if(a2.length!=length)//数组的长度应该相等
返回false;
对于(int i=0;i您可以使用Apache Commons方法检查数组相等性。公共静态无效比较数组(int[]array1,int[]array2){
布尔b=真;
if(array1!=null&&array2!=null){
if(array1.length!=array2.length)
b=假;
其他的
for(int i=0;i
数组的长度必须相同,且数字始终相同(数组中的第一个数字必须是sasme,以此类推)
基于此评论,您已经有了自己的算法:
function compareArrays(int[] array1, int[] array2) {
if (array1 == null) return false
if (array2 == null) return false
if array1.length != array2.length then return false
for i <- 0 to array1.length - 1
if array1[i] != array2[i] return false
return true
}
检查两个阵列是否具有相同的长度:
array1.length==array2.length
同一位置的编号必须相同:
阵列1[x]==array2[x]
知道了这一点,您可以像这样创建代码(这不是Java代码,而是一种算法):
为了完整起见,您应该有一个可以检查所有数组的方法:
公共静态布尔比较数组(E[]array1,E[]array2){
布尔b=真;
for(int i=0;i
现有的答案中没有一个涉及使用比较器,因此不能用于二叉树或排序。因此,我将把这个留在这里:
public static int compareIntArrays(int[] a, int[] b) {
if (a == null) {
return b == null ? 0 : -1;
}
if (b == null) {
return 1;
}
int cmp = a.length - b.length;
if (cmp != 0) {
return cmp;
}
for (int i = 0; i < a.length; i++) {
cmp = Integer.compare(a[i], b[i]);
if (cmp != 0) {
return cmp;
}
}
return 0;
}
公共静态整数比较数组(int[]a,int[]b){
如果(a==null){
返回b==null?0:-1;
}
如果(b==null){
返回1;
}
int cmp=a.长度-b.长度;
如果(cmp!=0){
返回cmp;
}
for(int i=0;ipublic static int compareIntArrays(int[] a, int[] b) {
if (a == null) {
return b == null ? 0 : -1;
}
if (b == null) {
return 1;
}
int cmp = a.length - b.length;
if (cmp != 0) {
return cmp;
}
for (int i = 0; i < a.length; i++) {
cmp = Integer.compare(a[i], b[i]);
if (cmp != 0) {
return cmp;
}
}
return 0;
}
public static void compareArrays(int[] array1, int[] array2) {
if (array1.length != array2.length)
{
System.out.println("Not Equal");
}
else
{
int temp = 0;
for (int i = 0; i < array2.length; i++) { //Take any one of the array size
temp^ = array1[i] ^ array2[i]; //with help of xor operator to find two array are equal or not
}
if( temp == 0 )
{
System.out.println("Equal");
}
else{
System.out.println("Not Equal");
}
}
}