Heim  >  Artikel  >  Java  >  Ausführliche Erläuterung der Listen-, Mengen- und Kartendurchquerung sowie Beispiele für erweiterten for-Schleifencode in Java

Ausführliche Erläuterung der Listen-, Mengen- und Kartendurchquerung sowie Beispiele für erweiterten for-Schleifencode in Java

黄舟
黄舟Original
2017-03-08 10:46:591591Durchsuche

Dieser Artikel stellt hauptsächlich die detaillierte Erklärung der Listen-, Mengen- und Kartendurchquerung und der erweiterten For-Schleife in Java vor. Freunde in Not können sich auf

Detaillierte Erklärung der Listen-, Mengen- und Kartendurchquerung in Java beziehen und erweiterte for-Schleife

Die Java-Sammlungsklasse kann in drei Hauptblöcke unterteilt werden, nämlich Liste, von der Sammlungsschnittstelle erweitertes Set und Sammlungen vom Typ Map, die in Form von Schlüssel-Wert-Paaren gespeichert sind.

In Bezug auf die erweiterte for-Schleife ist zu beachten, dass mit der erweiterten for-Schleife nicht auf den Array-Indexwert zugegriffen werden kann und die zugehörigen Methoden von Iterator auch intern zum Durchlaufen der Sammlung verwendet werden. Wenn Sie nur einfache Traversal-Lesungen durchführen, wird die erweiterte for-Schleife tatsächlich die Codemenge reduzieren.

Konzept der Sammlung:

1. Funktion: Wird zum Speichern von Objekten verwendet
2. Darunter erscheint jedes Objekt als Element der Sammlung
3. Java-Container haben Sammlungsklassen und Arrays, der Unterschied ist

und ihre häufig verwendeten Implementierungsklassen

Listenschnittstelle:

Listengeordnete Elemente können wiederholt werden

Implementierungsklasse: ArrayList: dynamische Array-Liste

LinkedList: Doppelt verknüpfte Liste

Set-Schnittstelle:

Der Satz ist ungeordnet und die Elemente können nicht wiederholt werden

Implementierungsklasse: HashSet: Hash-Set

TreeSet: Interne Sortierung des Baumsatzes

Kartenschnittstelle:

Daten in Form von Schlüssel-Wert-Paaren speichern – Schlüssel dürfen nicht wiederholt werden

Implementierungsklasse: HashSet: Hash-Set

TreeSet: Sortierung innerhalb der Baummenge

Die in JDK1.0 erscheinenden Sammlungsklassen sind alle threadsicher, aber die Effizienz ist gering

Die in JDK1.0 erscheinenden Sammlungsklassen JDK1.2 ist nicht threadsicher, aber die Effizienz ist gering. Hoch

Codebeispiele sind wie folgt:

import java.util.ArrayList; 
import java.util.HashSet; 
import java.util.Iterator; 
import java.util.List; 
import java.util.Set; 
 
public class ListAndSet{ 
 
  public static void main(String[] args) { 
    setTest(); 
    listTest();
  } 
  // 遍历Set集合
  private static void setTest() { 
    Set<string> set = new HashSet<string>(); 
    set.add("A"); 
    set.add("B"); 
    set.add("C");  
    set.add("D"); 
    set.add("E"); 
 
    //set集合遍历方法1:使用iterator 
    Iterator<string> it = set.iterator(); 
    while (it.hasNext()) { 
      String value = it.next(); 
      System.out.println(value); 
    } 
 
    //set集合遍历方法2:使用增强for循环。 
    for(String s: set){ 
      System.out.println(s); 
    } 
  } 
 
  // 遍历list集合 
  private static void listTest() { 
    List<string> list = new ArrayList<string>(); 
    list.add("111"); 
    list.add("222"); 
    list.add("333"); 
    list.add("444"); 
    list.add("555"); 
 
    // 遍历方式1:使用iterator 
    Iterator<string> it = list.iterator(); 
    while (it.hasNext()) { 
      String value = it.next(); 
      System.out.println(value); 
    } 
 
    // 遍历方法2:使用传统for循环进行遍历。 
    for (int i = 0, size = list.size(); i < size; i++) { 
      String value = list.get(i); 
      System.out.println(value); 
    } 
 
    // 遍历方法3:使用增强for循环进行遍历。 
    for (String value : list) { 
      System.out.println(value); 
    } 
  } 
} 
 
//关于Map类型集合的遍历,keySet()与entrySet()方法
//增强For循环 
public class Map{ 
 
  public static void main(String[] args) { 
    // 创建一个HashMap对象,并加入了一些键值对。 
    Map<string, string=""> maps = new HashMap<string, string="">(); 
    maps.put("111", "111"); 
    maps.put("222", "222"); 
    maps.put("333", "333"); 
    maps.put("444", "444"); 
    maps.put("555", "555"); 
 
    // 传统的遍历map集合的方法1; keySet() 
    //traditionalMethod1(maps); 
    // 传统的遍历map集合的方法2; entrySet() 
    //traditionalMethod2(maps); 
    // 使用增强For循环来遍历map集合方法1; keySet() 
    //strongForMethod1(maps); 
    // 使用增强For循环来遍历map集合方法2; entrySet() 
    strongForMethod2(maps); 
  } 
 
  private static void strongForMethod2(Map<string, string=""> maps) { 
    Set<entry<string, string="">> set = maps.entrySet(); 
    for (Entry<string, string=""> entry : set) { 
      String key = entry.getKey(); 
      String value = entry.getValue(); 
      System.out.println(key + " : " + value); 
    } 
  } 
 
  private static void strongForMethod1(Map<string, string=""> maps) { 
    Set<string> set = maps.keySet(); 
    for (String s : set) { 
      String key = s; 
      String value = maps.get(s); 
      System.out.println(key + " : " + value); 
    } 
  } 
 
  // 使用entrySet()方法,获取maps集合中的每一个键值对, 
  private static void traditionalMethod2(Map<string, string=""> maps) { 
    Set<map.entry<string, string="">> sets = maps.entrySet(); 
    // 取得迭代器遍历出对应的值。 
    Iterator<entry<string, string="">> it = sets.iterator(); 
    while (it.hasNext()) { 
      Map.Entry<string, string=""> entry = (Entry<string, string="">) it.next(); 
      String key = entry.getKey(); 
      String value = entry.getValue(); 
      System.out.println(key + " : " + value); 
    } 
  } 
 
  // 使用keySet()方法,获取maps集合中的所有键,遍历键取得所对应的值。 
  private static void traditionalMethod1(Map<string, string=""> maps) { 
    Set<string> sets = maps.keySet(); 
    // 取得迭代器遍历出对应的值。 
    Iterator<string> it = sets.iterator(); 
    while (it.hasNext()) { 
      String key = it.next(); 
      String value = maps.get(key); 
      System.out.println(key + " : " + value); 
    } 
  } 
}


Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Listen-, Mengen- und Kartendurchquerung sowie Beispiele für erweiterten for-Schleifencode in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn