java - 迭代时修改集合 (Java)

标签 java performance iterator set

<分区>

我对 Java 中的集合/迭代器有疑问。我正在执行迭代散列集中元素的代码,在使用后删除它们,但也删除被认为不需要在循环中迭代的元素。我还在循环中添加元素。这是一个代码示例:

Set<Integer> thisSet = new HashSet<Integer>();
// add elements into set
while (!thisSet.isEmpty()) {
   int value = thisSet.iterator().next();
   thisSet.remove(value);
   // more remove and add operations
}

我选择哈希集是因为我认为循环中的删除操作会比使用列表时快很多。问题是统计数据告诉我,如果集合变大,从集合中轮询一个值实际上会占用很多时间(我假设是因为每次都创建一个迭代器?)。有人对如何改进这个有什么建议吗?

谢谢!

最佳答案

您可以找到有关集合性能测量的文章:http://www.artima.com/weblogs/viewpost.jsp?thread=122295 (Bruce Eckel 的最终性能测试示例)

http://java.dzone.com/articles/java-collection-performance (Java 集合性能)

也许它会帮助您为您的实现选择正确的集合。

关于java - 迭代时修改集合 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18032465/

相关文章:

performance - WP7 开始歌曲播放性能不佳

python - 遍历字符串的一部分

java - Apache Camel 服务的 Junit 测试用例

mysql - 将mysql慢查询日志更改为public_html路径

java - Spring MVC 基于url参数的请求映射

代理服务器的 C# 性能(与 C++ 相比)

java - 从集合中删除 N 个元素

C# 自定义 Iterator 实现 - 防止在 foreach 循环期间修改集合

java - Xmx内存分配给容器时出错

java - 在JSP页面中打印一个 "tree"结构