1. Улучшен для обзора
Улучшенный для Loop, также известный как петля Foreach, используется для прохождения массивов и контейнеров (классы сбора). При использовании Foreach для прохождения массивов и элементов сбора нет необходимости получать массив и длину сбора, нет необходимости доступа к элементам массива и элементам сбора на основе индекса, что значительно повышает эффективность, и код намного проще.
2. Объяснение официального веб -сайта Oracle
Итак, когда вы должны использовать за свою петлю? Каждый раз, когда вы можете. Это действительно красиво ваш код. К сожалению, вы не можете использовать его везде. Рассмотрим, например, метод разжигания. Программа нуждается в доступе к итератору, чтобы удалить текущий элемент. Формальная петля скрывает итератор, поэтому вы не можете вызвать удаление. Следовательно, для фильтрации не можно использовать для фильтрации. Точно так же он не может использоваться для петель, где вам нужно заменить элементы в списке или массиве, когда вы проходите его. Наконец, он не подлежит полезным для петель, которые должны быть параллельно перевернуть несколько коллекций. Эти недостатки были известны дизайнерам, которые приняли решение сознания пойти с чистой, простой конструкцией, которая будет охватывать подавляющее большинство случаев.
Итак, когда вы должны использовать за свою петлю? Это нормально в любое время. Это действительно украшает ваш код. К сожалению, вы не можете использовать его нигде. Рассмотрим эти ситуации, например, метод удаления. Чтобы удалить текущий элемент, программа необходимо получить доступ к итератору. Формальная петля скрывает итератор, поэтому вы не можете вызвать функцию Delete. Следовательно, за свои петли не подходят для фильтрации элементов. Кроме того, петли, которые необходимо заменить элементы при итерации через коллекцию или массив, не применимы. Наконец, он не подходит для использования параллельного цикла в нескольких итерациях коллекции. Дизайнеры должны понимать эти недостатки и сознательно спроектировать чистую, простую структуру, чтобы избежать этих ситуаций. Если вы заинтересованы, вы можете просмотреть API официального сайта. Если вы не знаете, как найти API на официальном веб -сайте, нажмите, чтобы открыть официальный веб -сайт, чтобы просмотреть метод API.
3. Увеличить формат
Для (тип переменной Имя сбора или элемента массива: объект сбора или объект массива) {оператор Java, который ссылается на имя переменной;}Официальный сайт Объяснение:
для (Timertask T: C)
t.cancel ();
Когда вы видите толстую кишку (:) Прочитайте его как «Внедовать». Петля выше гласит как «для каждого Timertask T в c.» Как вы можете видеть, на предмет своей конструкции прекрасно сочетается с дженериками. Он сохраняет всю безопасность типа, удаляя оставшийся беспорядок. Поскольку вам не нужно объявлять итератор, вам не нужно предоставлять для него общее объявление. (Компилятор делает это для вас за спиной, но вам не нужно беспокоиться о себе.)
Общий смысл:
Когда вы видите толстую кишку (:), он гласит: «Войдите». Приведенный выше петлей гласит «путешествуя каждый элемент Timertask в c.» Как вы можете видеть, зала, что она идеально сочетается с дженериками. Он сохраняет все типы безопасности при удалении оставшейся путаницы. Поскольку вам не нужно объявлять итератор, вам не нужно предоставлять его общим объявлением. (Компилятор сделал это позади вас, вам не нужно заботиться об этом.)
Простой опыт:
1. Увеличено для массивов обхода
Пакет Cn.jason01; // Enhanced для массива обхода открытого класса Fortest01 {public static void main (string [] args) {int [] array = {1,2,3}; for (int element: array) {System.out.println (element); }}}2. Увеличено для сборов обхода
пакет cn.jason01; import java.util.arraylist; открытый класс Fortest {public static void main (string [] args) {// Общий вывод, вы можете написать или не писать строки arraylist <string> array = new ArrayList (); array.add ("a"); array.add ("b"); array.add ("c"); for (String String: Array) {System.out.println (String); }}}4. Увеличить основной принцип для
Сначала посмотрите на код
Пакет Cn.jason01; импорт java.util.arraylist; import java.util.iterator;/** * Улучшен для базового принципа * * @author cassandra * @version 1.1 */public class fortest {public Static void main (string [] args) {// generic anpurance, вы можете написать позже или не. Некоторые спецификации должны быть написаны. Arraylist <string> array = new ArrayList (); // Добавить элементы array.add ("a"); array.add ("b"); array.add ("c"); // Улучшение для системы реализации. IS, основной принцип реализации System.out.println ("--- Обратно-компиляция ----"); строка строки; for (iterator iterator = array.iterator (); iterator.hasnext (); System.out.println (String)) {String = (String) iterator.next ();} // Итератор реализует System.out.println ("-------------"); for (iterator <string> i = array.iterator (); i.hasnext (); system.out.println (i.next ()))) {} // обычный для реализации System.out.println ("-----------"); for (int x = 0; x <array.size (); x ++) {System.out.println (array.get (x));}}}Из приведенного выше кода мы видим, что базовый уровень реализован итераторами, и улучшение для фактически скрывает итератор, поэтому естественный код намного проще без создания итераторов. Это также является причиной того, что улучшение запускается, чтобы уменьшить код, облегчение сборов и массивов и повысить эффективность.
ПРИМЕЧАНИЕ. Поскольку улучшение для итераторов прячи при использовании улучшения для прохождения коллекций и массивов, вы должны сначала определить, является ли он нулевым, в противном случае будет выброшено исключение по нулевым указателю. Причина очень проста. Базовый уровень должен использовать массив или объект сбора, чтобы вызвать метод итератора () для создания итератора (итератор итератор является интерфейсом, поэтому его необходимо реализовать с помощью подкласса). Если он нулю, исключение обязательно будет брошено.
5. повысить применимость и ограничения для
1. Применимость
Подходит для прохождения коллекций и массивов.
2. Ограничения:
① Набор не может быть нулевым, потому что базовый слой является итератором.
② Итератор скрыт, поэтому коллекция не может быть изменена (добавлена и удалена) при прохождении коллекции.
③cannot устанавливает угловые отметки.
6. Подробное объяснение использования улучшения для
1. Улучшенное использование в массивах
Пакет cn.jason05; импорт java.util.arraylist; import java.util.list;/** * Увеличен для использования * * @author cassandra */public class fordemo {public static void main (String [] args) {// raverse at int [] arr = {1, 2, 3, 4, 5}; для (int x: arr) {System.out.println (x); }}}2. Увеличить использование для коллекций
пакет cn.jason05; import java.util.arraylist; import java.util.list;/** * Увеличен для использования * * @author cassandra */public class fordemo {public static void main (string [] args) {// traverse the Collection ArrayList <string> ray = новый arraylist <string> ();); array.add ("Привет"); Array.Add ("World"); array.add ("java"); for (String S: Array) {System.out.println (s); } // Набор null, добавьте NullPointerException Null Pointer List <string> list = null; if (list! = null) {for (string s: list) {System.out.println (s); }} // Улучшение добавления или модификации элементов в для, добавьте одновременно модифицированное исключение для (String X: Array) {if (array.contains ("java"))). }}3. Идеальное сочетание дженериков и улучшения для
Примечание: он должен быть идеально сочетается с дженерами, иначе вам нужно вручную трансформироваться вниз.
1. Нет общего эффекта, не может использовать улучшение для
Ученик класс
Пакет CN.Jason01; студент открытого класса {частная строка name1; частная строка name2; public Student () {super (); } public Student (String name1, string name2) {super (); this.name1 = name1; this.name2 = name2; } public String getName1 () {return name1; } public void setName1 (string name1) {this.name1 = name1; } public String getName2 () {return name2; } public void setName2 (string name2) {this.name2 = name2; }}Тестовый код
пакет cn.jason01; import java.util.arraylist; import java.util.iterator; import java.util.list; public class test02 {public static void main (string [] args) {// Создание SET 1 List1 = new ArrayList (); list1.add ("a"); list1.add ("b"); list1.add ("c"); // Создать SET 2 LIST LIST2 = NEW ARRAYLIST (); list2.add ("D"); list2.add ("e"); list2.add ("f"); // Создать установление трех списков списка3 = new ArrayList (); // Переносить первые и вторые наборы и добавить элементы, чтобы установить три для (итератор i = list1.iterator (); Строка s = (строка) i.next (); for (iterator j = list2.iterator (); j.hasnext ();) {// list2.add (новый студент (s, j.next ())); String ss = (string) j.next (); List3.Add (новый студент (S, SS)); }} // пройти набор трех и вывести элемент Student ST; for (iterator k = list3.iterator (); k.hasnext (); System.out .println (new StringBuilder (). Append (St.GetName1 ()). Append (St.GetName2 ()))) {st = (студент) k.next (); }}}Если вышеупомянутый код удаляет две строки комментариев, программа сообщит об ошибке, потому что коллекция не заявляет, какой тип элемент, и итератор, естественно, не знает, какой он тип. Так что, если нет дженериков, вам нужно преобразовать вниз, вы можете использовать только итераторы, а не улучшения.
2. дженерики и улучшения для
Измените приведенный выше код
Пакет CN.Jason01; импорт java.util.arraylist; import java.util.iterator; import java.util.list;/** * Увеличить идеальную комбинацию для и генерики * * @author cassandra */public class test03 {public static void main (string [] args) {//create 1 list 1 rest1 = New List1 = New List1 = New List1; list1.add ("a"); list1.add ("b"); list1.add ("c"); // Создать Set 2 List <string> list2 = new ArrayList <string> (); list2.add ("D"); list2.add ("e"); list2.add ("f"); // Создать Set Three List <toold> list3 = new ArrayList <tlood> (); //// Траверсировать первые и вторые наборы и добавить элементы, чтобы установить три для (String S1: List1) {for (String S2: list2) {list3.add (новый студент (S1, S2)); }} // Траверсировать набор три и выходные элементы для (Student St: list3) {System.out.println (new StringBuilder (). Append (st.getName1 ()). Append (st. st.getName2 ())); }}}4. Четыре метода сбора списков
В интерфейсе коллекции есть метод итератора (), который возвращает тип итератора и имеет итератор в качестве итератора. В списке есть метод ListIterator (), поэтому есть дополнительный список сбора. Его подклассы LinkedList, ArrayList и Vector All реализации и интерфейсы сбора, так что вы можете использовать два итератора для прохождения.
Тестирование кода
Пакет CN.Jason05; импорт java.util.arraylist; import java.util.iterator; импорт java.util.list; import java.util.listiterator;/*** Это четыре метода пересечения списка. * @author cassandra */public class fordemo01 {public static void main (string [] args) {// Создание списка коллекций <string> list = new ArrayList <string> (); list.add ("hello"); list.add ("World"); list.add ("java"); // Метод 1, итератор итератор итератор итератор <string> i = list.iterator (); while (i.hasnext ()) {string s = i.next (); System.out.println (s); } // Метод 2, ListIterator итератор Traversal Collection ListerIterator <string> lt = list.listiterator (); while (lt.hasnext ()) {string ss = lt.next (); System.out.println (ss); } // Метод 3, обычный для сбора траверса для (int x = 0; x <list.size (); x ++) {string sss = list.get (x); System.out.println (SSS); } // Метод 4, Enhance for Traversal Collection для (String ssss: list) {System.out.println (sss); }}}5. Метод обхода сбора сбора в 2
Поскольку набор SET не имеет метода GET (int Index), нет обычного цикла, в наборе нет метода ListIterator (), поэтому нет итератора ListIterator. Так что есть только два способа пройти.
Тестирование кода
пакет cn.jason05; import java.util.hashset; import java.util.iterator; import java.util.set; public class fortest03 {public static void main (string [] args) {set <string> set = new Hashset <string> (); set.add ("Привет"); set.add ("World"); set.add ("java"); // Метод 1, итератор итератор итератор его = set.iterator (); while (it.hasnext ()) {System.out.println (it.next ()); } // Метод 2, усиление для сбора траверса для (String S: set) {System.out.println (s); }}}7. Резюме
1. Увеличить применимость и ограничения для
Применимость: применимо к прохождениям коллекций и массивов.
Ограничение:
① Набор не может быть нулевым, потому что базовый слой является итератором.
② Угольная отметка не может быть установлена.
③ Итератор скрыт, поэтому коллекция не может быть изменена (добавлена и удалена) при прохождении коллекции.
2. Только путем улучшения комбинации для и дженериков в коллекции может сыграть роль новых функций.
3. Очень важно просмотреть новые функции официального сайта. Вы должны знать причину и причину. Только зная это в своем сердце, вы можете использовать его свободно.
Самое полное резюме использования цикла FOR в приведенной выше статье «Новые функции Java» - это все контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.