Java 原始列表';s don';即使值/顺序相同,似乎也不匹配?可能吗?

Java 原始列表';s don';即使值/顺序相同,似乎也不匹配?可能吗?,java,arrays,Java,Arrays,我有一个int[]列表,我一次列出一个。我发现了一个有趣的模式,结果似乎相反,所以为了测试它,我颠倒了进入方法的列表,然后显示它们,发现它们匹配。我希望以编程方式查找它们,但当我将列表本身打印为字符串时,即使项目/顺序匹配,结果也不匹配 方法如下(它只需输入数据、颠倒顺序并同时打印……没什么特别的): 他们都是这样的,我不确定为什么他们不匹配,当他们是一样的(至少看起来一样)。我有一个名为results的arraylist,它包含所有int[],我尝试了一个results.indexof(反向)

我有一个int[]列表,我一次列出一个。我发现了一个有趣的模式,结果似乎相反,所以为了测试它,我颠倒了进入方法的列表,然后显示它们,发现它们匹配。我希望以编程方式查找它们,但当我将列表本身打印为字符串时,即使项目/顺序匹配,结果也不匹配

方法如下(它只需输入数据、颠倒顺序并同时打印……没什么特别的):


他们都是这样的,我不确定为什么他们不匹配,当他们是一样的(至少看起来一样)。我有一个名为
results
的arraylist,它包含所有int[],我尝试了一个results.indexof(反向)但没有运气(我得到了-1)。我怎样才能找到匹配的

这些都是对象地址。它们引用不同的整数数组,因此它们不匹配

使用该方法可以直观地查看数组的内容:

import java.util.Arrays;
// ... code
System.out.println (" " + Arrays.toString(arr));

这些都是对象地址。它们引用不同的整数数组,因此它们不匹配

使用该方法可以直观地查看数组的内容:

import java.util.Arrays;
// ... code
System.out.println (" " + Arrays.toString(arr));

您正在查看所拥有的int数组的地址。数据是相同的,但数据存储在多个位置,因为您使用的是多个实例


要比较数组,请使用。或者,您可以使用以更好的格式查看数组中的信息。

您正在查看您拥有的int数组的地址。数据是相同的,但数据存储在多个位置,因为您使用的是多个实例



要比较数组,请使用。或者,您可以使用以更好的格式查看数组中的信息。

打印的是哈希代码。这就像两者都是独立的对象,并且分别存储在堆内存中。HashCode只是JVM分配给每个对象的唯一编号。我希望这就是您要找的。

打印的是哈希代码。这就像两者都是独立的对象,并且分别存储在堆内存中。HashCode只是JVM分配给每个对象的唯一编号。我希望这就是你想要的。

我不认为哈希代码和内存地址是一样的。“如果哈希代码让人困惑,你就把它当作内存地址来记住。”-1我只是让他那样记住它,如果它让人困惑,我已经清楚地提过了。不,因为hashcode没有被打印出来,而是实例化对象的地址。由于Makoto所说,仍然无效。不管怎么说,告诉别人一些完全错误的事情,因为这是一种方便,并不能使它好。散列和内存位置是两个完全不相交的概念。我不认为散列代码和内存地址是一样的。“如果散列代码让人困惑,你就把它当作内存地址来记住。”-1我只是让他用这种方式记住,如果它让人困惑,我已经清楚地提到了。不,因为hashcode没有被打印出来,而是实例化对象的地址。由于Makoto所说,仍然无效。不管怎么说,告诉别人一些完全错误的事情,因为这是一种方便,并不能使它好。散列和内存位置是两个完全不相交的概念。当我尝试使用
result2.indexOf(Arrays.toString(ReversedList))查找
arraylistresult2
时,我(通常)对两件事感到困惑
它仍然给出-1..如果我需要将其转换为其他内容,请告诉我,否则我可以创建一个方法来完成此操作。但另一件让人困惑的事情是,如果与c不同,Java不允许您使用malloc或free,为什么它会给我内存地址?@Lostsoul您可以发布处理这些数组的整个代码,这样我们就可以确切地看到问题出现的地方吗?问题是
indexOf
使用
Object.equals()
来检查相等性,这只是数组的引用相等。如果你想使用
列表
,你真的没有选择,只能自己迭代列表,而不是使用
indexOf
@Louis谢谢,这就是我所怀疑的。我想如果他愿意,他可以扩展
ArrayList
来实现自己的功能。多亏了我(通常)对两件事有点困惑,当我尝试使用
result2.indexOf(Arrays.toString(ReversedList))查找
arraylistresult2
它仍然给出-1..如果我需要将其转换为其他内容,请告诉我,否则我可以创建一个方法来完成此操作。但另一件让人困惑的事情是,如果与c不同,Java不允许您使用malloc或free,为什么它会给我内存地址?@Lostsoul您可以发布处理这些数组的整个代码,这样我们就可以确切地看到问题出现的地方吗?问题是
indexOf
使用
Object.equals()
来检查相等性,这只是数组的引用相等。如果你想使用
列表
,你真的没有选择,只能自己迭代列表,而不是使用
indexOf
@Louis谢谢,这就是我所怀疑的。我想如果他愿意,他可以扩展
ArrayList
来实现自己的功能。
import java.util.Arrays;
// ... code
System.out.println (" " + Arrays.toString(arr));