powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с ошибкой - NoSuchElementException(коллекции)
17 сообщений из 17, страница 1 из 1
Проблема с ошибкой - NoSuchElementException(коллекции)
    #38759642
Sergeyyy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем форумчанам снова привет!

Пытался модифицировать код, который мне любезно помогли сделать в теме ниже, под свои нужды...И понеслась ошибка на ошибке.


СОбс-но, вот он:
(тапочками особо не кидать!)

Код: 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.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class tstr {

	public static ExecutorService es = Executors.newCachedThreadPool();
	public static Map<String, Runner> array = Collections
			.synchronizedMap(new HashMap<String, Runner>());
	public static Map<String, String[][]> array2 = new HashMap<String, String[][]>();
	public static Map<String, String[][]> array3 = new HashMap<String, String[][]>();
	public static int A1 = 1;
	public static int B1 = 4;

	public static void main(String[] args) {
		runs();
		Scanner scan = new Scanner(System.in);
		while (true) {
			String nxt = scan.next();
			Runner obj = array.get(nxt);
			Runner runner;
			if (obj != null) {
				obj.future.cancel(true);
				int factor = obj.factor;
				factor *= 2;
				Iterator iter = array2.entrySet().iterator();
				Iterator iter2 = array3.entrySet().iterator();
				while (iter.hasNext()) {
					while (iter2.hasNext()) {
						Map.Entry en = (Map.Entry) iter.next();
						Map.Entry en2 = (Map.Entry) iter2.next();
						if (nxt.equals(en.getKey())) {
							if (nxt.equals(en2.getKey())) {
								String[][] arr = (String[][]) en.getValue();
								String[][] arr2 = (String[][]) en2.getValue();
								arr[0][4] = String.valueOf(factor);
								arr2[0][3] = String.valueOf(factor);
								array2.put(nxt, arr);
								array3.put(nxt, arr2);
							}
						}
					}
				}
				runner = new Runner(factor, nxt);
			} else {
				runner = new Runner(2, nxt);
				String[][] m1 = new String[1][5];
				m1[0][0] = nxt;
				m1[0][1] = nxt;
				m1[0][2] = "0";
				m1[0][3] = "0";
				m1[0][4] = "2";
				String[][] m2 = new String[1][5];
				m2[0][0] = nxt;
				m2[0][1] = "0";
				m2[0][2] = "0";
				m2[0][3] = "2";
				array2.put(nxt, m1);
				array3.put(nxt, m2);
			}
			array.put(nxt, runner);
			runner.future = es.submit(runner);
		}
	}

	public static void runs() {
		(new Thread(new Runnable() {
			@Override
			public void run() {
				for (int i = 0; i < Integer.MAX_VALUE; i++) {
					try {
						Thread.sleep(1000);
					} catch (InterruptedException e) {
						// e.printStackTrace();
					}
					Iterator iter = array2.entrySet().iterator();
					Iterator iter2 = array3.entrySet().iterator();
					while (iter.hasNext()) {
						while (iter2.hasNext()) {
							Map.Entry en = (Map.Entry) iter.next();
							Map.Entry en2 = (Map.Entry) iter2.next();
							String[][] arr = (String[][]) en.getValue();
							String[][] arr2 = (String[][]) en2.getValue();
							if (arr2[0][3] == "0") {
								System.out.println(arr[0][1] + " Удален == 0");
								iter.remove();
								iter2.remove();
							}
						}
					}
					System.out.println("---------------");
				}

			}
		})).start();
	}

	private static class Runner implements Runnable {
		private Future future;
		private final int time = 1000;
		private int factor;
		private String element;

		private Runner(int factor, String element) {
			this.factor = factor;
			this.element = element;
		}

		@Override
		public void run() {
			try {
				Thread.sleep(factor * time);
				tstr.array.remove(element);
				for (Entry<String, String[][]> entry2 : tstr.array3.entrySet()) {
					String[][] arr2 = entry2.getValue();
					arr2[0][3] = "0";
					tstr.array3.put(element, arr2);
				}
				System.out.println(element + " removed " + factor + " seconds");
			} catch (InterruptedException e) {
			}
		}
	}
}



Если вы попробуете запустить этот код, и введете много много значений( просто вводите много цифр и ждите) То в конце концов у вас выдаст - Exception in thread "main" java.util.NoSuchElementException

Причина мне не ясна, сначала он выдавал КурентМодификаторЕкспетион( Да простит меня Гослинг) НО я вроде бы эту проблему исправил, переделав все с итераторами. А теперь элементы из коллекции выпадают..


Помогите, пожалуйста! Гуру отозвитесь!))
...
Рейтинг: 0 / 0
Проблема с ошибкой - NoSuchElementException(коллекции)
    #38759656
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergeyyy,
убери
Код: java
1.
Thread.sleep(factor * time);

и все будет ок
...
Рейтинг: 0 / 0
Проблема с ошибкой - NoSuchElementException(коллекции)
    #38759663
Sergeyyy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rema174,

но это ключевой элемент программы))
...
Рейтинг: 0 / 0
Проблема с ошибкой - NoSuchElementException(коллекции)
    #38759669
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergeyyy,

тогда ты знаешь вокруг чего тебе нужно плясать, удачи ))
...
Рейтинг: 0 / 0
Проблема с ошибкой - NoSuchElementException(коллекции)
    #38759670
Sergeyyy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rema174,

Даже не представляю, если честно... слипать поток, это пока единственный выход сделать время.. Можно, конечно, отсчитывать разницу времени..НО это как то не так. Неужели дело только в этом?) Я думал нет элементов в коллекции или еще чего-то..
...
Рейтинг: 0 / 0
Проблема с ошибкой - NoSuchElementException(коллекции)
    #38759677
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у тебя всн нормально работает, когда сначала срабатывает английский вывод...(и все что с ним связано), а потом уже русский, но когда начинаешь много вводить, то у тебя "англ-й" не поспевает за "русским"... вот там и возникает ошибка
...
Рейтинг: 0 / 0
Проблема с ошибкой - NoSuchElementException(коллекции)
    #38759679
Sergeyyy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rema174,

И как исправить, кроме удаления слип? Вроде бы та русская часть в отдельном рунере/потоке..
...
Рейтинг: 0 / 0
Проблема с ошибкой - NoSuchElementException(коллекции)
    #38759681
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergeyyy,

а что тебе это даст, если ты не понимаешь, что делает твоя программа?
...
Рейтинг: 0 / 0
Проблема с ошибкой - NoSuchElementException(коллекции)
    #38759683
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
или можно поставить вопрос по другому: зачем делать то, что не понимаешь, делай таким путем который понимаешь, чтобы не загонять себя в такие тупики
...
Рейтинг: 0 / 0
Проблема с ошибкой - NoSuchElementException(коллекции)
    #38759684
Sergeyyy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rema174,

Честно говоря, я и не знаю как сделать такое паралельное отсчитывание времени.. Только слип ведь.
...
Рейтинг: 0 / 0
Проблема с ошибкой - NoSuchElementException(коллекции)
    #38760530
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По моему всё предельно ясно.

public class NoSuchElementException
extends RuntimeException

Thrown by the nextElement method of an Enumeration to indicate that there are no more elements in the enumeration.
...
Рейтинг: 0 / 0
Проблема с ошибкой - NoSuchElementException(коллекции)
    #38760986
Sergeyyy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Вам Гуру все ясно) А мне что-то нифига) Посмотрел как можно еще решить, скажем так, приостанавливание , выдало timer. Запускаем какой-то task через определенное время.( Хотя у него много других параметров, запуск с повторением и т д. Ни один из них не подошел..Так что нужно решать этот вопрос с sleep)

Ксати, элементы то в коллекции есть. Если вы попробуете запустить этот код и много много раз введете, то у вас выскочит эта самая ошибка, но после нее вы увидите вывод вот этой строки:

Код: java
1.
System.out.println(element + " removed " + factor + " seconds");



Значит элементы там все же есть...
...
Рейтинг: 0 / 0
Проблема с ошибкой - NoSuchElementException(коллекции)
    #38761029
DDiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а нафиг вам столько мапов 0_о
пытался понять что вы хотите этим кодом сделать, бросил так и не начав.
У вас помница была довольно простая задача. А вы из неё монстра какого-то сделали.

Ещё раз вам повторю, сформулируйте вашу задачу, судя по коду, вы к ней идете через одно место. Сформулируйте именно задачу, а не описывайте уже некий ваш алгоритм, который вы хотите приладить к поставленной задаче.
...
Рейтинг: 0 / 0
Проблема с ошибкой - NoSuchElementException(коллекции)
    #38761052
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDiver,
+1
...
Рейтинг: 0 / 0
Проблема с ошибкой - NoSuchElementException(коллекции)
    #38761062
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergeyyyПосмотрел как можно еще решить, скажем так, приостанавливание , выдало timer. Запускаем какой-то task через определенное время.( Хотя у него много других параметров, запуск с повторением и т д. Ни один из них не подошел..Так что нужно решать этот вопрос с sleep)

Ксати, элементы то в коллекции есть. Если вы попробуете запустить этот код и много много раз введете, то у вас выскочит эта самая ошибка, но после нее вы увидите вывод вот этой строки:

Я очень рад что ты хотя-бы понял масштабность трагедии. Мультпипоточный код отличнается от однопоточного
недереминизмом состояний. На нашем языке это значит примерно следующее. В классическом однопоточном
коде можно выделить N состояний и спокойно ходить по ним дебаггером (с чашечкой кофе в руке). Вдумчиво.
В мультипоточном коде попытка встать дебаггером или добавить System.out.println или добавить sleep() сильно
меняет картину. Это как квантовый эффект бро. Как только ты смотришь на код - он ведёт себя так. А как
только не смотришь - по другому

Как фиксить твой код я чесно говоря не знаю т.к. не знаю чего ты добиваешся. Кэп очевидность говорит
что there are no more elements in the enumeration. . Нет элементов в интерфейсе Enumeration.
Возможно ты в одном потоке дёрнул hasNext а в другом next. Если простьто ставить себе задачу - исключить
некорректное поведение с Enum - то это не будет решением твоего алгоритма. Я знаю как синхронизировать
Enum но что это тебе даст? Будет ли это целью? Или это ложная цель. Скорее всего ложная.
...
Рейтинг: 0 / 0
Проблема с ошибкой - NoSuchElementException(коллекции)
    #38761222
Sergeyyy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Может это решит какие-то проблемы...А может и нет, синхронизация эта)
...
Рейтинг: 0 / 0
Проблема с ошибкой - NoSuchElementException(коллекции)
    #38761234
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это примерно как бессстемно махать топором и думать авось получится стол вырезать
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с ошибкой - NoSuchElementException(коллекции)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]