java - 在数组中查找相同的元素并防止重复计数
问题描述
给定以下代码:
public static int countSames(Object[] a) {
int count = 0;
for (int i = 0; i < a.length; i++) {
for (int k = 0; k < a.length; k++) {
if (a[i].equals(a[k]) && i != k) {
count += 1;
break; //Preventing from counting duplicate times, is there way to replace this?
}
}
}
return count;
}
我想知道是否有不使用break 语句的解决方案,因为我听说过它的不好做法。但是如果没有中断,此方法返回 6 而不是数组 {'x', 'x', 'x'} 所需的 3。
解决方案
如果您要查找数组中唯一元素的数量,请尝试使用这种方法,因为它只有一个循环,因此很有效。
private static int findNUmberOfUnique(String[] array) {
Set<String> set=new HashSet<>();
for(int i=0;i<array.length;i++){
if(!set.contains(array[i])){
set.add(array[i]);
}
}
return set.size();
}
如果我没有清楚地理解您的要求,请告诉我。
推荐阅读
- ruby-on-rails - 两个 gem 依赖项中的超类冲突
- c# - 检测是否有任何带有标签的对象在触发器内
- sails.js - Sailsjs - Cloud SDK - 蓝图 API 自动生成的路线?
- javascript - 角反应形式内的切换按钮
- mysql - Mysql——查询性能
- flowtype - 使用流正确键入 fromJS 函数的返回值
- sql - SQL A不是左连接B,只是A吗?
- python - What does the rcond parameter of numpy.linalg.pinv do?
- flutter - Flutter 中是否有具有拖动功能的可扩展列表小部件?
- google-cloud-platform - 查看 GCP Cloud Datastore 指标、跟踪、查询计划