android - HashSet 中出现重复项
问题描述
在我的 android 开发中,我从 api 获取特定数据。并使用我迭代的数据来创建 HashSet。此实现的目的是删除重复项。但仍然存在重复。
for(int i=0;i<array.length();i++) {
HashSet<String> hashSetObject = new HashSet<String>();
hashSetObject.add(leagueName);
Log.d("HASHSET","values in HashSet object " + hashSetObject.toString());
}
在上面的编码leagueName
中是一个来自 api 的字符串。这段代码的输出如下......
D/HASHSET: values in HashSet object [League One]
D/HASHSET: values in HashSet object [Championship]
D/HASHSET: values in HashSet object [Premiership]
D/HASHSET: values in HashSet object [Championship]
D/HASHSET: values in HashSet object [League One]
D/HASHSET: values in HashSet object [Premiership]
.....
我需要一个没有重复的 HashSet。请帮我。
解决方案
您的循环正在循环的每次迭代中创建一个新集合:
for(int i=0;i<array.length();i++) {
HashSet<String> hashSetObject = new HashSet<String>(); // <-- new HashSet every time
hashSetObject.add(leagueName);
Log.d("HASHSET","values in HashSet object " + hashSetObject.toString());
}
将您的代码更改为:
HashSet<String> hashSetObject = new HashSet<String>();
for(int i=0;i<array.length();i++) {
hashSetObject.add(leagueName);
Log.d("HASHSET","values in HashSet object " + hashSetObject.toString());
}
编辑以解决日志记录问题: 您遇到的第二个问题是日志记录。当前循环正在正确地将元素添加到集合中,但是每次循环遍历它时,日志都会输出整个集合中的内容。
最好只循环最后一组。
更改您当前的代码:
HashSet<String> hashSetObject = new HashSet<String>();
for(int i=0;i<array.length();i++) {
hashSetObject.add(leagueName);
Log.d("HASHSET","values in HashSet object " + hashSetObject.toString());
}
对于这样的事情:
// Create set
HashSet<String> hashSetObject = new HashSet<String>();
// Add elements to the set
for(int i=0;i<array.length();i++) {
hashSetObject.add(leagueName);
}
// Read each element from the set
for (String valueInSet : hashSetObject) {
Log.d("HASHSET","value in HashSet object " + valueInSet);
}
推荐阅读
- python-3.x - 如何从数据集中删除图像及其标签
- ruby-on-rails - 在单个 POST HTTP 请求中发送一组不同的哈希值
- java - 返回泛型类型时出现 ClassCastException
- wordpress - Nginx 位置指令中子目录的正则表达式或通配符
- kubernetes - 同一个集群中的不同入口被绑定到不同的地址
- excel - 电子表格::ParseExcel::SaveParser 问题 - 无法获取定义的工作簿对象
- vuejs2 - 从 Nuxt.js 中的注入插件访问其他注入方法
- android - 显示其他类的吐司时内存泄漏
- sql - SELECT 语句包含保留字或参数拼写错误或丢失,或标点符号不正确
- tensorflow - 使用 ssd mobilenet v1 coco 的 output_node_name 进行推理的冻结模型