Как получить элемент из коллекции при работе с iterator?

В коде пометил где хочу вызвать метод next() итератора, подскажите как нужно правильно обращаться - ибо не работает

package Lesson17_02_06.Home2;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

public class Runner {

	public static void main(String[] args) {
		
		//мой динамический массив
		List <Integer> list1 = new ArrayList<Integer>();
		
		//поток ввода
		InputStream input = null;
		Scanner sc = null;
		
		try {
			input = new FileInputStream("src/Lesson17_02_06/Home2/itClass.txt");
			sc = new Scanner(input);
			
			Iterator it = list1.iterator();
			
			while(sc.hasNext()) {
				Integer n = sc.nextInt();
				list1.add(n);
			}
			
			int countPositiv = 0;
			int countNegative = 0;
			while(it.hasNext()) {
				// КАК ОБРАТИТЬСЯ к следующему элементу коллекции ?
                                // метод it.next() - возвращает тип Object 
				if(n < 0) {
					countNegative++; 
				}else {
					countPositiv++;
				}
			}
			System.out.println("Кол-во отрицательных = " + countNegative + ", кол-во положительных = " + countPositiv );
			
		} catch (FileNotFoundException e) {
			System.out.println("Ошибка в файле!");
		} catch (IOException e) {
			e.printStackTrace();
		}
		input(list1);
	}
	
	public static void input(List <Integer> list1) {
		System.out.println(list1);
	}
}
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Во-первых, получайте параметризированный итератор, тогда будет возвращать не Object
Iterator<Integer> it = list1.iterator();

Во-вторых, вы изменяете коллекцию после того, как получили для неё итератор, это приведёт к выбросу исключения ConcurrentModificationException при попытке получить из итератора элемент.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы