Hashset删除部分数据
来源:互联网 发布:手机视频恢复软件 编辑:程序博客网 时间:2024/06/05 18:48
转自:http://a455360448201209214217.iteye.com/blog/1888762
hashset是单列的数据,hashmap,hashtable都是都是双列的数据,有key和value
因为需要获取id,但首次读取id的时候只读取了前五十行(1000个id),不要重复的id值。本打算从51行开始读剩余的id,但是会和前五十行id重复,读取文件文件所有行中的id值,并删除前五十行中已经获取的id值。本以为直接删除hashset中前(1000个id),但是因为hashset中的数据时无序的,所以前五十行中的1000个id值,并不是新的set中的前一百行。
如果你需要得到一个有序的结果你就应该使用TreeMap,TreeMap中的是先加入的在前边,是有序的。
此时,需要删除Hashset中的一些数据,但是直接删除的时候,使用如下方法会报错
Exception in thread "main" java.util.ConcurrentModificationException
错误方法:
if(set.contains("123"))
Set.remove(“123”);
以上方法是不对的。
此时需要:
Iterator it = set.iterator();
while(it.hasNext()){
String id=(String)it.next();
int id1=Integer.parseInt(id);
if(id1==123){
// set.remove(id); 这种方法不对
it.remove(); //只能使用这种方法
}
}
上一步仅仅在内存中将制定的数值删除,文件中的还没有删除。所以还需要将新set中的值重新写到文件中
Iterator it1 = set.iterator();
StringBuffer buffer1=new StringBuffer();
while(it1.hasNext())
{
String id=(String) it1.next();
String newline = System.lineSeparator();
String idName=id+newline;
buffer1.append(idName);
}
FileUtils.writeStringToFile(sourcefile, buffer1.toString(), false);
//参数false表明是重新写入文件,不是以追加的方法写入文件。
其实,没必要继续将所有不重复的id读取到hashset,因为数据已经不重复了,同时,如果我要是删除数据的话,使用hashset删除,需要循环很多次才可以实现,需要遍历很多次(因为有很多的id要删除,所以需要循环好多次)(删除的id要遍历,set删除id也需要遍历)。所以这样子做不好。
Iterator it = set.iterator();
while(it.hasNext()){
String id=(String)it.next();
int id1=Integer.parseInt(id);
if(id1==123){
// set.remove(id); 这种方法不对
it.remove(); //只能使用这种方法
}
}
直接使用list删除最方便,(删除是只需要循环一次要删除的id即可)
listId.contains(str);
listId.remove(str);
直接将list读取到内存中,然后判断是否删除,这样子速度很快。
- Hashset删除部分数据
- HashSet容器 删除/添加数据实例
- HashSet删除重复元素
- 部分字段重复数据的删除
- 部分字段重复数据的删除
- sql 删除部分字段重复数据
- ORACLE大表中删除部分数据最佳方案
- db2 删除大表部分数据
- ORACLE大表中删除部分数据最佳方案
- ORACLE大表中删除部分数据最佳方案
- HashSet 删除重复的项
- [java]HashSet删除null元素
- ORACLE大表删除部分数据的最佳方案
- oracle查询重复数据并删除掉多余部分
- Java 中HashSet的部分解释
- 利用HashSet找重复数据
- 利用HashSet过滤重复数据
- HashSet集合去掉重复数据
- pair与make_pair的简单例子
- 数据库学习12-存储过程
- 深入并发AQS二
- objective-c block的使用
- IO(输入输出流)
- Hashset删除部分数据
- 静态数组的索引越界问题
- 初次见面
- 浅谈HTTP中Get与Post的区别
- LeetCode | Swap Nodes in Pairs(将链表中的元素两两交换)
- 数据库学习13-触发器
- netlink学习笔记(一)
- GPT HDD识别
- ubuntu 安装Zend Studo 后不能安装插件