相关疑难解决方法(0)

每个'循环的Java'如何工作?

考虑:

List<String> someList = new ArrayList<String>();
// add "monkey", "donkey", "skeleton key" to someList
Run Code Online (Sandbox Code Playgroud)
for (String item : someList) {
    System.out.println(item);
}
Run Code Online (Sandbox Code Playgroud)

如果for不使用for each语法,等效循环会是什么样的?

java foreach syntactic-sugar

1446
推荐指数
25
解决办法
252万
查看次数

在Java中迭代列表的方法

对于Java语言有些新意,我试图让自己熟悉一个可能遍历列表(或者可能是其他集合)以及每个集合的优点或缺点的所有方法(或者至少是非病态方法).

给定一个List<E> list对象,我知道以下循环所有元素的方法:

基本 循环(当然,还有就是相当于while/ do while循环以及)

// Not recommended (see below)!
for (int i = 0; i < list.size(); i++) {
    E element = list.get(i);
    // 1 - can call methods of element
    // 2 - can use 'i' to make index-based calls to methods of list

    // ...
}
Run Code Online (Sandbox Code Playgroud)

注意:正如@a​​marseillan指出的那样,这种形式对于迭代Lists来说是一个糟糕的选择,因为该get方法的实际实现可能不如使用时那样有效Iterator.例如,LinkedList实现必须遍历i之前的所有元素以获得第i个元素.

在上面的例子中,List实现没有办法"保存它的位置"以使未来的迭代更有效.因为ArrayList它并不重要,因为复杂性/成本get是恒定时间(O(1)),而a LinkedList是它与列表的大小(O(n))成比例.

有关内置Collections实现的计算复杂性的更多信息,请查看此问题 …

java iteration collections loops

543
推荐指数
6
解决办法
87万
查看次数

为什么使用迭代器而不是数组索引?

请使用以下两行代码:

for (int i = 0; i < some_vector.size(); i++)
{
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

还有这个:

for (some_iterator = some_vector.begin(); some_iterator != some_vector.end();
    some_iterator++)
{
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

我被告知第二种方式是首选.这究竟是为什么?

c++ iterator stl

227
推荐指数
13
解决办法
7万
查看次数

将枚举中的所有名称作为String []

将枚举元素的名称作为Strings 数组的最简单和/或最短的方法是什么?

我的意思是,例如,如果我有以下枚举:

public enum State {
    NEW,
    RUNNABLE,
    BLOCKED,
    WAITING,
    TIMED_WAITING,
    TERMINATED;

    public static String[] names() {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

names()方法将返回一个类似的数组{ "NEW", "RUNNABLE", "BLOCKED", "WAITING", "TIMED_WAITING", "TERMINATED" }.

java arrays enums

91
推荐指数
6
解决办法
12万
查看次数

Iterator vs for

我在接受采访时被问到使用for循环使用迭代器的优点是什么?使用for循环迭代器的优点是什么?

任何人都可以回答这个问题,以便将来如果我面临类似的问题那么我可以回答这个问题

java iterator for-loop

65
推荐指数
5
解决办法
5万
查看次数

Java中传统for循环与Iterator/foreach的性能

在遍历ArrayList,HashMap和其他集合时,是否有任何性能测试结果可用于比较传统的for循环与Iterator?

或者我为什么要使用Iterator for循环,反之亦然?

java iterator for-loop arraylist map

60
推荐指数
3
解决办法
5万
查看次数

For-each vs Iterator.哪个是更好的选择

请考虑以下情形.

List<String> list = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

现在我添加了String此列表的值.

我使用以下方法来查看列表中的每个元素.

选项一 - 使用 for-each

for (String i : list) {
        System.out.println(i);
    } 
Run Code Online (Sandbox Code Playgroud)

选项二 - 使用 Iterator

Iterator it=list.iterator();
while (it.hasNext()){
   System.out.println(it.next());
}
Run Code Online (Sandbox Code Playgroud)

我只是想知道如果我使用for-each而不是有任何性能优势Iterator.现在在Java中使用Iterator也是一种不好的做法?

java foreach iterator

45
推荐指数
3
解决办法
6万
查看次数

用for循环或while循环迭代?

我经常看到如下代码:

Iterator i = list.iterator();
while(i.hasNext()) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

但我写的是(当Java 1.5不可用或者每个都不能使用时):

for(Iterator i = list.iterator(); i.hasNext(); ) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

因为

  • 它更短
  • 它保持i在较小的范围内
  • 它减少了混淆的可能性.(在i外面使用?i声明在哪里?)

我认为代码应该尽可能简单易懂,这样我才能制作复杂的代码来完成复杂的事情.你怎么看?哪个更好?

来自:http://jamesjava.blogspot.com/2006/04/iterating.html

java iterator for-loop

40
推荐指数
4
解决办法
5万
查看次数

Java中的Iterator接口有什么好处?

我刚刚了解了Java Collections Framework如何在链表中实现数据结构.根据我的理解,这Iterators是一种遍历数据结构(如列表)中的项目的方法.为什么使用这个界面?为什么这些方法hasNext(),next()remove()不是直接编码到数据结构实现本身?

从Java网站:链接文本

public interface Iterator <E>

集合上的迭代器.Iterator取代了Java集合框架中的Enumeration.迭代器在两个方面与枚举不同:

  • 迭代器允许调用者在迭代期间使用定义良好的语义从底层集合中删除元素.
  • 方法名称已得到改进.
此接口是Java Collections Framework的成员.

我试着用Google搜索,似乎无法找到明确的答案.有人可以解释为什么Sun选择使用它们吗?是因为更好的设计?增加安全性?好的OO练习?

任何帮助将不胜感激.谢谢.

java oop collections iterator interface

35
推荐指数
3
解决办法
2万
查看次数

Java mockito模拟集

可以在循环中使用后进行模拟设置,例如

for(String key: mySet) { ...}
Run Code Online (Sandbox Code Playgroud)

谢谢.

java set mockito

8
推荐指数
2
解决办法
9866
查看次数