我有一个ints[]列表,我一次只列出一个。我发现了一个无止境的模式,结果似乎是相反的,所以为了测试它,我反转了进入我的方法中的列表,然后显示它们,并发现它们匹配。我想以编程的方式找到它们,但是当我以字符串的形式打印列表本身时,即使条目/订单匹配,结果也不匹配。
下面是一个方法(它只获取数据,颠倒顺序并打印both..nothing花式):
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的数组列表,它包含了所有的int[],我试图做一个results.indexof(反转),但是没有运气(我得到'-1‘的所有东西)。我怎样才能找到火柴?
发布于 2012-05-26 03:37:39
您正在查看所拥有的int数组的地址。数据是相同的,但是数据存储在多个位置,因为您使用的是多个实例。
若要比较数组,请使用Arrays.equals(int[], int[])。或者,您可以使用Arrays.toString(int[])以更好的格式查看数组中的信息。
发布于 2012-05-26 03:33:35
这些都是对象地址。它们引用不同的整数数组,因此它们不匹配。
使用java.util.Arrays.toString(int[])方法可以直观地看到数组的内容:
import java.util.Arrays;
// ... code
System.out.println (" " + Arrays.toString(arr));发布于 2012-05-26 03:38:48
正在印刷的是HASHCODE。这就好像这两个都是单独的对象,并且分别存储在堆内存中。HashCode只不过是JVM分配给每个对象的唯一数字。我希望这就是你要找的。
https://stackoverflow.com/questions/10763377
复制相似问题