集合類的通用遍歷方式, 用迭代器迭代:
Iterator it = list.iterator();
while(it.hasNext()) {
Object obj = it.next();
}
Map遍歷方式:
1、通過獲取所有的key按照key來遍歷
//Set<Integer> set = map.keySet(); //得到所有key的集合 for (Integer in : map.keySet()) { String str = map.get(in);//得到每個key多對用value的值 }
2、通過Map.entrySet使用iterator遍歷key和value
Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry<Integer, String> entry = it.next(); System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); }
3、通過Map.entrySet遍歷key和value,推薦,尤其是容量大時
for (Map.Entry<Integer, String> entry : map.entrySet()) { //Map.entry<Integer,String> 映射項(鍵-值對) 有幾個方法:用上面的名字entry //entry.getKey() ;entry.getValue(); entry.setValue(); //map.entrySet() 返回此映射中包含的映射關系的 Set視圖。 System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); }
4、通過Map.values()遍歷所有的value,但不能遍歷key
for (String v : map.values()) { System.out.println("value= " + v); }
List遍歷方式:
第一種:
for(Iterator iterator = list.iterator();iterator.hasNext();){ int i = (Integer) iterator.next(); System.out.println(i); }
第二種:
Iterator iterator = list.iterator(); while(iterator.hasNext()){ int i = (Integer) iterator.next(); System.out.println(i); }
第三種:
for (Object object : list) { System.out.println(object); }
第四種:
for(int i = 0 ;i<list.size();i++) { int j= (Integer) list.get(i); System.out.println(j); }
https://www.cnblogs.com/leskang/p/6031282.html
遍歷Collection集合中的6種方法:
package com.qls.traverse; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Enumeration; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Stack; /** * 下面是遍歷Collection的幾種方法,以List接口為例: * @author 秦林森 * */ public class ListTest { public static void main(String[] args) { // TODO Auto-generated method stub String[] s="sixi is one of the most beautiful villages in china".split(" "); List<String> list = Arrays.asList(s); /** * 第一種方法用增強for循環。(這里List之所以能用增強for循環其原因在於它實現了Iterable接口) */ for(String str:list){ System.out.print(str+" "); } System.out.println(); System.out.println("************"); /** * 第二種方法用Iterator */ Iterator<String> it = list.iterator(); while(it.hasNext()){ String next = it.next(); System.out.print(next+" "); } System.out.println(); System.out.println("************"); /** * 第三種方法主要針對LinkedList。因為LinkedList 既有棧(stack)的特點,又有隊列(Queue) * 的特點。所以遍歷LinkedList中的元素。根據stack和queue,可以進行相關的遍歷。 * 遍歷的方法如下所示: */ //Using linkedList as a stack LinkedList<String> list2=new LinkedList<>(list);//創建一個LinkeList包含list中的全部元素。 while(!list2.isEmpty()){ System.out.print(list2.removeFirst()+" "); } System.out.println(); System.out.println("************"); /** * Using linkedList as a queue */ LinkedList<String> list3=new LinkedList<>(list); while(list3.peek() != null){ System.out.print(list3.poll()+" "); } System.out.println(); System.out.println("************"); /** * 第四種方法把所有的Collection都可以當做Enumeration進行遍歷 * Collections.enumeration(c) */ ArrayList<String> list4=new ArrayList<>(list); Enumeration<String> e = Collections.enumeration(list4); while(e.hasMoreElements()){ System.out.print(e.nextElement()+" "); } /**第五種方法 * 當然還有其他方法如: */ System.out.println(); System.out.println("************"); for(int i=0;i<list4.size();i++){ System.out.print(list4.get(i)+" "); } System.out.println(); System.out.println("************"); /**第六種方法: *再如: */ while(!list4.isEmpty()){ int index=0; System.out.print( list4.remove(index++)+" "); } /** * 備注:在List接口中的所有實現類中最常用的是ArrayList LinkedList * ArraList比LinkedList的速度快,一般情況下選中ArrayList的情況比LinkedList多。 * 在ArrayList源碼中有一個serialVersionUID,這個數字保證了, * 寫入文件(ObjectOutputStream.writeObject(Object)) * 讀取文件(ObjectInputStream.readObject())可以順利進行, * 並且指明這個數字,可以保持各個版本的兼容性。有利於文件傳輸。 */ } }/*Output: sixi is one of the most beautiful villages in china ************ sixi is one of the most beautiful villages in china ************ sixi is one of the most beautiful villages in china ************ sixi is one of the most beautiful villages in china ************ sixi is one of the most beautiful villages in china ************ sixi is one of the most beautiful villages in china ************ sixi is one of the most beautiful villages in china *///:~
2. List遍歷
List的遍歷方法主要有以下幾種:
- 普通for循環遍歷
- 增強for循環遍歷
- 迭代器Iterator遍歷
- 結合for循環和Iterator遍歷
- lambada表達式遍歷
下面一個示例說明一下List的遍歷方法
package Collection; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ListTraverse { public static void main(String[] args) { //創建List List<String> list = new ArrayList<String>(); list.add("Java"); list.add("Python"); list.add("C++"); list.add("C"); list.add("Golang"); //使用普通for循環遍歷List for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } //使用增強for循環遍歷 for (String str: list) { System.out.println(str); } //使用迭代器Iterator遍歷 Iterator<String> iterator = list.iterator(); while (iterator.hasNext()){ System.out.println(iterator.next()); } //結合for循環和Iterator遍歷 for ( Iterator<String> iterator1 = list.iterator();iterator1.hasNext();){ System.out.println(iterator1.next()); } //使用lambada表達式遍歷 list.forEach(str -> System.out.println(str)); } }
3. Set遍歷
Set遍歷一般有以下兩種方法:
- 迭代器Iterator遍歷
- 增強for循環遍歷
下面一個示例說明一下Set的遍歷方法:
package Collection; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class SetTraverse { public static void main(String[] args) { Set<String> set = new HashSet<String>(); set.add("Java編程思想"); set.add("算法導論"); set.add("數據結構與算法"); //使用迭代器Iterator遍歷 Iterator<String> iterator = set.iterator(); while (iterator.hasNext()){ System.out.println(iterator.next()); } //使用增強for循環遍歷 for (String str: set) { System.out.println(str); } } }
3. Map遍歷
Map遍歷一般有以下四種方法:
使用hashMap.entrySet循環:
使用Iterator遍歷
使用hashMap.keySet()/hashMap.values/Iterator
使用hashMap.keySet()/forEach遍歷
下面以一個示例說明Map的遍歷方法:
————————————————
版權聲明:本文為CSDN博主「Anseong」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_42155910/article/details/109136194
package Collection; import java.util.*; public class MapTraverse { public static void main(String[] args) { Map<String,String> map = new HashMap<>(); map.put("name","張三"); map.put("age","18"); map.put("sex","male"); //使用hashMap.entrySet()循環 for (Map.Entry<String,String> entry:map.entrySet()){ System.out.println(entry.getKey() + "----->" + entry.getValue()); } //使用Iterator遍歷 Iterator<Map.Entry<String,String>> iterator = map.entrySet().iterator(); while (iterator.hasNext()){ Map.Entry<String,String> entry = iterator.next(); System.out.println(entry.getKey() + "----->" + entry.getValue()); } //使用hashMap.keySet()/hashMap.values/Iterator Set<String> strings = map.keySet(); Collection<String> values = map.values(); for (Iterator<String> iterator1 = strings.iterator();iterator1.hasNext();) { String key = iterator1.next(); String value = (String) map.get(key); System.out.println(key + "----->" + value); } for (Iterator i = values.iterator(); i.hasNext();) { String s = (String) i.next(); System.out.println(s); } //使用hashMap.keySet()/forEach遍歷 Set<String> keys = map.keySet(); for (String key :keys){ System.out.println(key + "----->" + map.get(key)); } } }