Внешний итератор по сравнению с внутренним итератором

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

30
задан Community 20 June 2014 в 18:09
поделиться

3 ответа

Внешний Итератор

, Когда Вы получаете итератор и переступаете через него, который является внешним итератором

for (Iterator iter = var.iterator(); iter.hasNext(); ) {
  Object obj = iter.next();
  // Operate on obj
}

Внутренний Итератор

, Когда Вы передаете функциональный объект методу для работания на основе списка, который является внутренним итератором

var.each( new Functor() {
  public void operate(Object arg) {
    arg *= 2;
  }
});
25
ответ дан Alex Shesterov 28 November 2019 в 00:08
поделиться

Я нашел этот описание :

Внешний по сравнению с внутренними итераторами.

Внешние Итераторы - когда повторением управляет объект коллекции, мы говорим, что у нас есть внешний Итератор.

На языках как .net или Java очень легко создать внешние итераторы. В нашей классической реализации реализован внешний итератор. В следующем примере используется внешний итератор:

// using iterators for a clloection of String objects:
// using in a for loop
for (Iterator it = options.iterator(); it.hasNext(); ) {
   String name = (String)it.next();
   System.out.println(name);
}

// using in while loop
Iterator name = options.iterator();
    while (name.hasNext() ){
      System.out.println(name.next() );
    }

// using in a for-each loop (syntax available from java 1.5 and above)
    for (Object item : options)
        System.out.println(((String)item));

Внутренние Итераторы - Когда итератор управляет им, у нас есть внутренний итератор

, С другой стороны реализация и использование внутренних итераторов являются действительно трудными. То, когда внутренний итератор используется, это означает, что код быть выполненным, делегировано к совокупному объекту. Например, на языках, которые предлагают поддержку этого, легко назвать внутренние итераторы:

collection do: [:each | each doSomething] (Smalltalk)  

основная идея состоит в том, чтобы передать код, который будет выполняться к набору. Тогда набор назовет внутренне doSomething метод на каждом из компонентов. В C++ возможно отправить doMethod метод как указатель. В C#.NET или VB.NET возможно отправить метод как делегата. В Java Functor должен использоваться шаблон разработки. Основная идея состоит в том, чтобы создать основной Интерфейс только с одним методом (doSomething). Тогда метод будет реализован в классе, который реализует интерфейс, и класс будет передан набору для итерации. Для получения дополнительной информации посмотрите Functor шаблон разработки.

11
ответ дан Md. Abu Nafee Ibna Zahid 28 November 2019 в 00:08
поделиться
2
ответ дан Community 28 November 2019 в 00:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: