java - 遍历迭代器中的元素,然后调用方法?

标签 java for-loop iterator

在一个文件中我有这个:

public DirectoryNode(String n, List<FileSystemNode> c) {
...
private List<FileSystemNode> nodes;
...
public Iterator<FileSystemNode> iterator() { return nodes.iterator(); }
...}

在另一个文件中,我有这个:

public class SizeVisitor implements FileSystemVisitor<Integer>
{...
    public Integer visitDirectory(DirectoryNode d){
    }
}

我的问题是,我如何在visitDirectory中创建一个for循环,它将采用d的迭代器,并遍历所有元素,然后在每个元素上调用方法“getSize”,该方法在文件系统节点? 非常感谢您的帮助。

最佳答案

你可能想做这样的事情:

public Integer visitDirectory (DirectoryNode d) {
  for ( Iterator<FileSystemNode> iterator = d.iterator(); iterator.hasNext(); ) {
    FileSystemNode fsn = iterator.next();
    fsn.getSize();
  }
}

您还可以让您的 DirectoryNode 实现 Iterable接口(interface),以便您可以使用 foreach 循环:

public Integer visitDirectory (DirectoryNode d) {
  for ( FileSystemNode fsn : d) {
    fsn.getSize();
  }
}

关于java - 遍历迭代器中的元素,然后调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13896454/

相关文章:

c++ - 我如何遍历 map vector

rust - 自定义迭代器中可变引用的生命周期参数问题

java - 在java中使用ActionListener

java - 如何使用 Java 方法 Class.getResourceAsStream() 从 jar 中读取 UTF-8 文本文件?

c++ - 为什么 vector::erase 似乎会导致崩溃?

php - 是否可以在 switch 中使用 for 循环?

objective-c - For 语句每次都漏掉最后一个对象

c++ - 取消引用后递增迭代器 - *iter++。它是如何评价的?

java - 在 JTable 中使用空列作为分隔符

通过 Java Servlet 转发后,表单重置的 Javascript 不起作用