java查找数组(如果它是另一个数组的子集)
仅当参数对象是调用对象的子集时,此函数才应返回true,但它始终返回true。如何修复它
public boolean contains(FileCollection other) {
int i = 0;
int j = 0;
for (i = 0; i<other.files.length; i++) {
for (j = 0; j<this.files.length; j++) {
if ((other.files[i]).equals((this.files[j]))) //this refers to the equals method defined in File class
break;
}
if (j==this.files.length)
return false;
}
return true;//this method is in FileCollection class
}
# 1 楼答案
除了@renyuneyun建议将数组转换为列表之外,还可以使用
String
contains
方法当然,从复杂性的角度来看,这两个建议都不是最佳解决方案,但肯定是最短的:)
# 2 楼答案
(因为您没有明确表示数组元素的数据类型,所以我假设它是
File
,由注释推断出来的。)如果您不介意在数据结构之间转换,也许将数组(暂时)转换为集合是最简单的方法。例如,转换为
List
:根据您对允许重复项目时“包含”内容的澄清,我认为您需要计算每个元素的存在数量。以下是方法:
根据@Eritrean的答案,你可以获得并将计数存储到地图上。我也做了一些修改来检查计数:
# 3 楼答案
只有这个答案对我有效:(比较部分归功于@Joop Eggen)