数组、列表、集合和映射都是可迭代的。还有什么?

2024-01-02

哪怕只是List and Set实现接口Iterable,我相信数组、列表、集合和映射都是iterable对象,因为我们可以通过 foreach 循环使用它们:

for(String s : new String[0]);
for(String s : new ArrayList<String>());
for(String s : new HashSet<String>());
for(Entry<Integer, String> entry : new HashMap<Integer, String>().entrySet());

的情况下Map可能有点不同,但让我们将其视为一个键值列表(它实际上是什么)。

从那开始可迭代的理解,我是否缺少以下方法中的类型?

public boolean isIterable(Object o) {
    return o instanceof Object[] || o instanceof Iterable || o instanceof Map;
}

换句话说,是否还有其他类型可以通过 foreach 循环进行迭代?

附带但由此产生的问题:该类型列表是否详尽?


任何实现Iterable<T>接口是可迭代的。这可迭代的API http://docs.oracle.com/javase/7/docs/api/java/lang/Iterable.html列出了许多执行此操作的核心 Java 类。请注意,这还包括您创建的实现该接口的类。如果我的类包含 ArrayList 或其他可迭代对象,并且我想方便地迭代其中的内容,我有时会这样做。我只是将列表的 Iterator 对象作为 iterator() 方法的返回结果传递。

例如:

人.java

class Person {
   private String lastName;
   private String firstName;
   public Person(String lastName, String firstName) {
      this.lastName = lastName;
      this.firstName = firstName;
   }
   @Override
   public String toString() {
      return "Person [lastName=" + lastName + ", firstName=" + firstName + "]";
   }


}

我的人民.java

class MyPeople implements Iterable<Person> {
   List<Person> personList = new ArrayList<Person>();

   // ... other methods and constructor

   @Override
   public Iterator<Person> iterator() {
      return personList.iterator();
   }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数组、列表、集合和映射都是可迭代的。还有什么? 的相关文章

随机推荐