在迭代器中运行元素,然后调用方法



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

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实现可迭代接口,以便可以使用foreach循环:

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

像这样:

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

如果在DirectoryNode中实现 Iterable 接口,则还可以使用 for-each 循环:

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

相关内容

最新更新