我有一个ints []列表,我一次列出一个。我找到了一个有趣的模式,结果似乎反转,所以测试它我颠倒了进入我的方法的列表,然后显示它们,发现它们匹配。我想以编程方式找到它们但是当我将列表本身打印为字符串时,即使项目/订单匹配,结果也不匹配。
这是方法(它只是获取数据,反转顺序并打印两个......没什么好看的):
private static void show (int [] arr) {
//before we print results lets reverse the list and study if there's something we can do to make this go faster
int[] ReversedList = new int[arr.length];
for (int x = arr.length-1, y=0; x>=0;x--, y++) {
ReversedList[y] = arr[x];
}
for (int x = 0; x < arr.length; x++) {
//System.out.print (" " + (arr [x] + low[x]));
System.out.print (" " + (arr[x]));
}
System.out.println (" " + arr.toString());
for (int x = 0; x < ReversedList.length; x++) {
//System.out.print (" " + (arr [x] + low[x]));
System.out.print (" " + (ReversedList[x]));
}
System.out.println (" " + ReversedList.toString() + " ***");
//System.out.println("*****************");
}
但字符串不匹配。这是输出的片段( * 表示它已被反转):
0 0 0 20 [I@199a0c7c
20 0 0 0 [I@50a9ae05 ***
....
20 0 0 0 [I@1e9af0b1
0 0 0 20 [I@4e300429 ***
它们都是这样的,我不确定为什么它们相同时不匹配(至少看起来一样)。我有一个名为results
的arraylist,其中包含所有的int [],我试图做一个results.indexof(反向)但没有运气(我得到'-1'的一切)。我怎样才能找到比赛?
答案 0 :(得分:4)
您正在查看您拥有的int数组的地址。数据相同,但数据存储在多个位置,因为您使用的是多个实例。
要比较数组,请使用Arrays.equals(int[], int[])
。或者,您可以使用Arrays.toString(int[])
以更好的格式查看数组中的信息。
答案 1 :(得分:2)
这些都是对象地址。它们引用不同的整数数组,因此它们不匹配。
使用java.util.Arrays.toString(int[])
方法来直观地查看数组的内容:
import java.util.Arrays;
// ... code
System.out.println (" " + Arrays.toString(arr));
答案 2 :(得分:-3)
什么是印刷品是HASHCODE。它们都是独立的对象,并且分别存储在堆内存中。 HashCode只是JVM为每个对象分配的唯一编号。我希望这就是你要找的东西。