English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Iterator和Enumeration都是游标,用于遍历和访问集合中的元素。它们都属于收集框架。在收集框架的JDK1.0和JDK1.2版本的Iterator中添加了枚举。
枚举不能对集合进行结构更改,因为它对集合中的元素具有只读访问权限。它具有以下方法:
* hasMoreElements()
* nextElement()
另一方面,迭代器可以读取和删除集合中的元素。它具有以下方法-
*hasNext()
*next()
*remove()
序号 | 键 | 迭代器 | 枚举 |
---|---|---|---|
1个 | 基本 | 在Iterator中,我们可以在遍历集合中的元素时读取和删除元素。 | 使用枚举,我们只能在遍历集合中的元素时读取元素。 |
2。 | 访问 | 它可以与集合框架的任何类一起使用。 | 它可以与收集框架的旧类一起使用,例如Vector和HashTable。 |
3. | Потеря-победа и потеря-безопасность | Любые изменения в наборе, например удаление элементов из набора во время итерации набора в потоке, вызывают исключение из-за параллельной модификации. | В сущности,枚举是故障安全的。Он не вызывает исключение из-за параллельной модификации |
4. | Ограничения | Он поддерживает только прямую итерацию | Нельзя использовать枚举 для выполнения операции удаления. |
5, | Метод | У него есть следующие методы − *hasNext() | У него есть следующие методы - * hasMoreElements() * nextElement() |
class EnumerationExample { public static void main(String args[]) { List list = new ArrayList(Arrays.asList(new String[]{"Apple", "Cat", "Dog", "Rat"})); Vector v = new Vector(list); delete(v, "Dog"); } private static void delete(Vector v, String name) { Enumeration e = v.elements(); while (e.hasMoreElements()) { String s = (String) e.nextElement(); if (s.equals(name)) { v.remove(name); } } // Показывать имена System.out.println("The names are:"); e = v.elements(); while (e.hasMoreElements()) { // Вывод элементов System.out.println(e.nextElement()); } } }
class IteratorExample { public static void main(String args[]) { List list = new ArrayList(Arrays.asList(new String[]{"Apple", "Cat", "Dog", "Rat"})); Vector v = new Vector(list); delete(v, "Dog"); } private static void delete(Vector v, String name) { Iterator i = v.iterator(); while (i.hasNext()) { String s = (String) i.next(); if (s.equals(name)) { i.remove(); } } // Показывать имена System.out.println("The names are:"); i = v.iterator(); while (i.hasNext()) { System.out.println(i.next()); } } }