- обработать ошибку на текущем уровне (избегайте перехватывать исключения,
если не знаете, как с ними поступить);- исправить проблему и снова вызвать метод, возбудивший исключение
- предпринять все необходимые действия и продолжить выполнение без
повторного вызова действия;- попытаться найти альтернативный результат вместо того, который должен
был бы произвести вызванный метод;- сделать все возможное в текущем контексте и заново возбудить это
же исключение, перенаправив его на более высокий уровень;- сделать все, что можно в текущем контексте, и возбудить новое исключение,
перенаправив его на более высокий уровень;- завершить работу программы;- упростить программу (если используемая схема обработки исключений
делает все только сложнее, значит, она никуда не годится);- добавить вашей библиотеке и программе безопасности;
О выборе структур данных для начинающих:
Часть 1. Линейные структуры:
Массив(Array). Динамический массив(ArrayList). Связные списки(LinkedList).
Часть 2. Линейные структуры данных с конечными точками:
Очередь с приоритетом(PriorityQueue).
Часть 4. Нелинейные структуры данных:
Словарь данных(HashMap). Упорядоченное(TreeSet, LinkedHashSet) и неупорядоченное(HashSet) множество. HashMap в картинках.
Часть 5. Правильный выбор структур данных.
Сортировка массивов/списков методом compareTo();
Java Collections расширяют интерфейс Iterable. List, Set и Queue поддерживают итератор.
Для java Map iterator также поддерживается, но его необходимо вызывать для Map.entrySet():
Map<String, Integer> map = new HashMap<>();
Iterator mapIterator = map.entrySet().iterator();
Дальше все аналогично с List:
while (mapIterator.hasNext()) {
Map.Entry<String, Integer> entry = mapIterator.next();
System.out.println("Key: " + entry.getKey());
System.out.println("Value: " + entry.getValue());
}
Паттерн — это шаблон проектирования, некое поведение, которого должен придерживаться класс или множество взаимосвязанных классов.
Интерфейс итератор – частная реализация одноименного паттерна, применяемая как к готовым структурам (List, Set, Queue, Map), так и к прочим, на усмотрение программиста. Расширяя интерфейс Iterator, ты реализуешь паттерн, но для реализации паттерна не обязательно расширять интерфейс.
Почитать про паттерн итератор позжеТо же про паттерн итератор. Не сегодня.
Iterator - если по-простому, то это метод, с помощью которого получается следующий элемент коллекции - ну, как бы некое правило обхода элементов коллекции/массива данных.
Формально это интерфейс Iterator, который содержит 3 метода:
hasNext() - проверяет, есть ли следующий элемент;
next() - возвращает следующий элемент;
remove() - удаляет текущий элемент.
Пример итератора с while:
Iterator<Integer> iterator = set.iterator();while(iterator.hasNext()){Integer element = iterator.next();if(element <5){
iterator.remove();}}
Пример итератора с for:
for(Iterator<Integer> iter = set.iterator(); iter.hasNext();){Integer element = iter.next();if(element <5){
iter.remove();}}