Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/12: Рейтинг темы: голосов - 12, средняя оценка - 4.50
4 / 4 / 1
Регистрация: 20.08.2011
Сообщений: 51

Вопрос по работе итератора.

10.05.2012, 09:12. Показов 2333. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть вот такой кусочек кода, но ,к моему стыду, я не совсем понимаю как он работает.
Буду оч признателен за разъяснения))
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import java.util.*;
 
class ReversibleArrayList<T> extends ArrayList<T> {
  public ReversibleArrayList(Collection<T> c) { super(c); }
  public Iterable<T> reversed() {
    return new Iterable<T>() {
      public Iterator<T> iterator() {
        return new Iterator<T>() {
          int current = size() - 1;
          public boolean hasNext() { return current > -1; }
          public T next() { return get(current--); }
          public void remove() { // Not implemented
            throw new UnsupportedOperationException();
          }
        };
      }
    };
  }
}   
 
public class AdapterMethodIdiom {
  public static void main(String[] args) {
    ReversibleArrayList<String> ral =
      new ReversibleArrayList<String>(
        Arrays.asList("To be or not to be".split(" ")));
    // Grabs the ordinary iterator via iterator():
    for(String s : ral)
      System.out.print(s + " ");
    System.out.println();
    // Hand it the Iterable of your choice
    for(String s : ral.reversed())
      System.out.print(s + " ");
  }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.05.2012, 09:12
Ответы с готовыми решениями:

Вопрос о работе с консолью
Здравствуйте. Мне нужно вводить начальные данные в консоль: количество + enter + через пробел цифры. Но проблема в том, что если я упущу...

Вопрос о работе с консолью
В консоль необходимо вводить название, затем enter. И так n раз. Проблема в том, что nextLine() выбрасывает ошибку (т.к. метод пытается...

Найти ошибку в работе итератора после изменения одной строки
Решил переписать код: for(vector&lt;string&gt;::iterator iter1(f1.begin()); ++iter1 != f1.end(); cout &lt;&lt; &quot;\b\b\b\b\b\b\b&quot; &lt;&lt;...

10
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
10.05.2012, 12:58
Класс наследуется от ArrayList-а, в нем описывается метод reverse, возвращающий итератор, пробегающий по коллекции в обратном порядке.
1
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
10.05.2012, 13:30
Цитата Сообщение от 4e87 Посмотреть сообщение
public T next() { return get(current--); }
почемуто у меня ощущение что тут ошибочка и надо
Java
1
public T next() { return get(--current); }
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
10.05.2012, 13:46
Цитата Сообщение от mutagen Посмотреть сообщение
почемуто у меня ощущение что тут ошибочка и надо
Вроде все нормально. Изначально же он инициализируется как:
Java
1
 int current = size() - 1;
В вашем варианте пропустится последний элемент.
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
10.05.2012, 13:49
да верно всё ок
0
4 / 4 / 1
Регистрация: 20.08.2011
Сообщений: 51
10.05.2012, 14:13  [ТС]
примерчик из thinking in java кстати
главный вопрос был вприципе понят самолично), т.е. я не понимал почему надо возвращать iterable.
если я правильно понял, то форич из итерабл объекта использует метод итератор или как-то так, следовательно чтоюы итераторы не подменялись надо в мейне вызвать реверс, который вернет итерабл и оттуда уже форич...верно?
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
10.05.2012, 14:36
Вот примерный код, на который заменяется форич, или enchanced for.
Было:
Java
1
2
for(String s : ral.reversed())
      System.out.print(s + " ");
Стало:
Java
1
2
3
4
5
6
7
Iteratable tmpIterable = ral.reversed();
Iterator tmpIterator = tmpIterable.iterator();
while (tmpIterator.hasNext())
{
   String s = tmpIterator.next();
   System.out.print(s + " ");
}
PS. Опущены только generic параметры.
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
10.05.2012, 14:38
а разве не на
Java
1
2
3
4
for (Iterator iterator = collection.iterator(); iterator.hasNext();) {
            type type = (type) iterator.next();
            
        }
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
10.05.2012, 14:50
Цитата Сообщение от mutagen Посмотреть сообщение
а разве не на
Так вы тоже самое и написали, опустив только немного больше.
1
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
10.05.2012, 15:05
Цитата Сообщение от turbanoff Посмотреть сообщение
тоже самое и написали
ну просто форич илюстрировать вайлом это сразу нубасские вопросы подымать, а так у меня претензий нет, вы же знаете что это просто вопрос холи
1
4 / 4 / 1
Регистрация: 20.08.2011
Сообщений: 51
10.05.2012, 17:30  [ТС]
вот это я и пытался узнать открывая новую тему всем спс)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.05.2012, 17:30
Помогаю со студенческими работами здесь

Тело метода не может быть блоком итератора, так как "void" не является типом интерфейса итератора
using UnityEngine; using UnityEngine.UI; using System.Collections.Generic; using System.Collections; using System; public...

Вопрос по работе со списками
foreach (var cache in cachelist) { if (cache.datetime &lt; DateTime.Now.AddMinutes(-1)) { ...

Простой вопрос о работе с с++
Вопрос вот в чем. Можно написать: bool Isp; for (short i = 0; i &lt; 30000; i++) { . . . }

Вопрос по удалённой работе...
Пожалуйста, выскажите свое мнение... У меня есть желание удалённо работать, прежде всего мне это интересно для накопления опыта. Я...

Вопрос по работе с файлами
Пока i-=2 не вставил, выводила пустую строку в результате. Почему так? Что за 2 знака перед eof() мешали? int main(int argc, char*...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru