sar*_*sar 2 java linkedhashset
我想知道从链接哈希集中删除元素的不同方法.我试过以下代码
LinkedHashSet<String> lhs = new LinkedHashSet<String>();
for(int i=0;i<10;i++)
lhs.add(String.valueOf(i));
Iterator<String> it=lhs.iterator();
System.out.println("removed?=="+lhs.remove("1"));
while(it.hasNext())
{
System.out.println("lhs"+it.next());
}
Run Code Online (Sandbox Code Playgroud)
我得到了以下输出
removed?==true
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.LinkedHashMap$LinkedHashIterator.nextEntry(Unknown Source)
at java.util.LinkedHashMap$KeyIterator.next(Unknown Source)
at preac.chapter1.Start.main(Start.java:321)
Run Code Online (Sandbox Code Playgroud)
我想念的是什么?提前致谢.
PS我也试过iterator.remove()方法,但得到了非法状态异常
编辑
我刚才知道我必须使用iterator remove方法.然后使用Link Hash Set删除方法是什么?在哪些情况下我们应该使用这种方法?
尝试使用Iterator.remove
如下所示删除元素,
LinkedHashSet<String> lhs = new LinkedHashSet<String>();
for (int i = 0; i < 10; i++) {
lhs.add(String.valueOf(i));
}
Iterator<String> it=lhs.iterator();
// System.out.println("removed?=="+lhs.remove("1"));
while(it.hasNext()) {
String value=it.next();
if("1".equals(value)){
it.remove();
}
else{
System.out.println("lhs "+value);// Print the other value except 1
}
}
System.out.println(lhs);// After remove see the result here.
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5800 次 |
最近记录: |