gpt4 book ai didi

java - 在java中哪个循环最适合迭代集合

转载 作者:行者123 更新时间:2023-12-03 02:13:40 24 4
gpt4 key购买 nike

在决定使用以下哪个循环来迭代集合中的元素时应满足哪些条件。例如,在什么情况下一个循环会比另一个循环更有效?

  • For Loop ??
  • While Loop ??
  • For-Each Loop ??

最佳答案

Java中有3种类型的循环。它们做不同的事情,并且对于 Collection 来说,有不同的用法。

传统的For循环

传统的 for 循环如下所示:

for (int i = 0; i < list.length(); i++) {
Object o = list.get(i);
}

当您需要将索引用于访问元素之外的其他用途时(例如当您有 2 个循环时,或者当您影响对象中某些值的索引时),它非常有用。

它只能与列表一起使用,即使如此,也不应该与LinkedList一起使用,因为get(i)O(n) 在那些。它不能与其他 Collection 一起使用,例如 Set

相同的语法也可以用于数组(使用 length 字段而不是 length() 方法),或字符串(使用 size() charAt)

这通常不是最好的循环。它不会阻止您弄乱 i 变量或 list 的内容,这可能会导致令人惊讶的结果。

While循环

While 循环可用于很多事情,但对于 Collection 来说,当您需要从列表中删除元素时使用它。它需要一个迭代器,这需要更多的工作:

Iterator<String> iter = coll.iterator();
while (iter.hasNext()) {
String elem = iter.next();
iter.remove();
}

它允许您安全地删除集合中的任何元素。它适用于任何Collection(ListSet)。

它不会让您直接访问索引,但 CollectionIterable 无论如何都不知道索引访问。

快速枚举 for 循环

最新添加的是上述内容的简短版本,无法删除项目:

for (String elem : coll) {

}

这是最清楚的。它不涉及任何额外的变量,并且适用于任何Iterable以及数组。

循环时(从循环内部或从另一个线程)禁止修改集合(它将抛出ConcurrentModificationException),这保证了数据的一致性。

尽可能使用它。

关于java - 在java中哪个循环最适合迭代集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37078661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com