【发布时间】:2018-03-09 17:38:39
【问题描述】:
情况是我必须迭代一个包含最多 5000 个元素的集合。目前,我正在使用带有迭代器的普通 for 循环。
for (Iterator iterator = allValues.iterator(); iterator.hasNext();) {
ListMetadataElem element = (ListMetadataElem) iterator.next();
NameValueObject value = new NameValueObject();
value.setId(element.getListMetadataElemSeqId().toString());
value.setValue(element.getListMetadataElemNm());
abstractVO.getAllListMetadataElems().add(value);
}
问题是它花费了太多时间来迭代,比如 6-7 秒,我必须多次调用同一个循环。
【问题讨论】:
-
给机会Java 8 并行流
-
您确定是迭代需要时间吗? 5000 个元素应该几乎没有
-
我不经常使用 Java,但在 Python 中,我希望对一组仅
5000元素的迭代非常快,并且只有 6-7 秒的一小部分。我只能假设它在 Java 中会同样快,而且可能快得多。我怀疑这是在你的循环中中发生的任何事情,那么abstractVO.getAllListMetadataElems()到底做了什么,例如? -
在我的慢速 PC 上,一组 5000 个字符串需要 324 毫秒
标签: java loops collections iterator set