gpt4 book ai didi

java - 使用 equals 方法检查两个整数子集是否相等

转载 作者:行者123 更新时间:2023-11-29 08:02:36 25 4
gpt4 key购买 nike

我在名为 IntArray 的类中有这个 java 方法。该类具有将整数添加到集合或从集合中删除整数、检查集合大小以及检查 2 个集合是否相等的方法。这 2 个集合是在 main 中使用 2 个不同的 IntArray 类型的对象创建的,假设对象 A 和 B.equals 方法应该检查两组整数是否相等。例如设置 A = {1,2,3} 和 B = {1,2,3,4}。即使一组是另一组的子集,该方法仍会返回 true。我到底做错了什么?谢谢。

//part of the code in main
IntArray A = new IntArray();
IntArray B = new IntArray();
if(A.equals(B))
System.out.println("A and B are equal");



//equals method in IntArray class
public boolean equals(Object b)
{
if (b instanceof IntArray)
{
IntArray A = (IntArray) b;
for (int i = 0; i < data.length; i++)
if (countOccurrences(data[i]) != A.countOccurrences(data[i]))
return false;
return true;
}
else return false;
}

最佳答案

 if (countOccurrences(data[i]) != A.countOccurrences(data[i]))

可能是

 if (countOccurrences(data[i]) != A.countOccurrences(A.data[i]))

编辑:

如果通过等于设置您的意思是子集中的每个元素都处于相同的顺序(A = {1,2,3} 和 B = {1,2,3}):

然后,您想使用 equals 方法检查整数的两个子集是否相等:

if (data[i].equals(A.data[i]));

确保仅在两个集合的长度相同时才比较它们。否则,返回 false。

如果您对 equals set 的定义意味着两个具有相同元素的集合,而不在意它们的位置:

你应该检查你的 countOccurrences 是否在做这样的事情:

public int countOccurrences(int element) 
{
int count = 0;
for(int i = this.data.length - 1; i >= 0; i--)
if(this.data[i] == element)
count ++;
return count;
}

在后一种情况下,您应该保留 if (countOccurrences(data[i]) != A.countOccurrences(data[i]))

关于java - 使用 equals 方法检查两个整数子集是否相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13504332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com