遍歷一個List有如下幾種方法 5 6 是 java8
增強for回圈底層由Iterator實作
增強for的出現時替代迭代器的,所以在遍歷集合或者遍歷陣列就可以使用增強for去完成
增強for回圈的弊端:如果集合的物件是null,如果再次對集合操作,就會出現例外,對集合進行判斷,非空判斷解決
四種遍歷方法:
1:迭代器 2:普通for回圈 3:增強for回圈 4:(非重點)listiterator(iterator的子介面)兩者相類似
(還以一種Vector自帶的elements()方法,類似于迭代器的遍歷方法)
如果結合為null,拋出:java.lang.NullPointerException
當應用程式試圖在需要物件的地方使用 null 時,拋出該例外
public class ForExercise {
public static void main(String[] args) {
ArrayList<String> array = new ArrayList<String>();
// array=null;
array.add("hello");
array.add("java");
array.add("worlid");
// 迭代器遍歷
//優點:自帶選擇判斷陳述句hasNext()方法,不會出現遍歷數量出現錯誤,書寫復雜
// 可以對集合進行洗掉操作
//缺點:該方法只能遍歷集合,比較局限,且需要建立物件,占用空間
Iterator<String> it = array.iterator();
while (it.hasNext()) {
String s = it.next();
System.out.println(s);
}
System.out.println("----------------");
//普通for回圈
//優點:有判斷陣列長度的控制陳述句,并且可以選擇遍歷長度,
// for回圈使用范圍廣,且使用簡單
//缺點:for回圈更多適用于回圈條件,不能對集合本身進行操作,對于集合遍歷稍顯不足
for(int x=0;x<array.size();x++){
String s1 = array.get(x);
System.out.println(s1);
}
System.out.println("-----------------");
//增強for回圈
//優點:代碼簡單易讀,書寫方便
//缺點:不能對集合本身進行操作
迭代器(Iterator)
迭代器是一種設計模式,它是一個物件,它可以遍歷并選擇序列中的物件,而開發人員不需要了解該序列的底層結構,迭代器通常被稱為“輕量級”物件,因為創建它的代價小,
Java中的Iterator功能比較簡單,并且只能單向移動:
(1) 使用方法iterator()要求容器回傳一個Iterator,第一次呼叫Iterator的next()方法時,它回傳序列的第一個元素,注意:iterator()方法是java.lang.Iterable介面,被Collection繼承,
(2) 使用next()獲得序列中的下一個元素,
(3) 使用hasNext()檢查序列中是否還有元素,
(4) 使用remove()將迭代器新回傳的元素洗掉,
Iterator是Java迭代器最簡單的實作,為List設計的ListIterator具有更多的功能,它可以從兩個方向遍歷List,也可以從List中插入和洗掉元素,
迭代器應用:
list l = new ArrayList();
l.add("aa");
l.add("bb");
l.add("cc");
for (Iterator iter = l.iterator(); iter.hasNext();) {
String str = (String)iter.next();
System.out.println(str);
}
/*迭代器用于while回圈
Iterator iter = l.iterator();
while(iter.hasNext()){
String str = (String) iter.next();
System.out.println(str);
}
for(String b:array) {
System.out.println(b);
}
}
}
增強for回圈的格式
for(資料大型別 變數名 : 陣列或者集合物件名){
輸出變數
}
public static void test1(List<String> list) {
1 for (int i = 0; i < list.size(); i++)
2 for (int i = 0,lengh=list.size(); i < lengh; i++)
{ System.out.println(list.get(i)); }}
3 Iterator<String> iterator = list.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
4 for(String str:list){
System.out.println(str);
5 list.forEach(str->{
System.out.println(str); });
6 list.forEach(str->{
System.out.println(str);});
1、通過key集合訪問,對Key敢興趣,可以訪問與key對應的Value值;
for(String k:maps.keySet()){
System.out.println(k+":"+maps.get(k));
}
2、通過value集合訪問,只對value值感興趣,無法訪問key值;
for(String value:maps.values()){
System.out.println(value);
}
3、通過Entry集合訪問,對Entry感興趣,可以訪問與key對應的Value值
for(Entry entry:maps.entrySet()){
System.out.println(entry.getKey()+":"+entry.getValue());
}
4、通過迭代Key集合訪問Map集合,maps.keySet()回傳的是一個Set<String>集合,Set直接繼承Collection,所以可以對其進行迭代,
Iterator<String> iterator = maps.keySet().iterator();
while(iterator.hasNext()){
String key = iterator.next();
System.out.println(key+":"+maps.get(key));
}
5、通過迭代Values集合訪問Map集合,maps.values()回傳的是Collection<String>,所以可以對其迭代,
Iterator<String> iter= maps.values().iterator();
while(iter.hasNext()){
System.out.println(iter.next());
}
6、通過迭代Entry集合訪問Map集合,maps.entrySet()回傳的是一個Set<Entry<String, String>>,Set直接繼承Collection,所以可以對其迭代,
Iterator<Entry<String, String>> it = maps.entrySet().iterator();
while(it.hasNext()){
Entry<String, String> entry = it.next();
System.out.println(entry.getKey()+":"+entry.getValue());
}
Java中迭代器Iterator介面是用來對集合中的物件進行遍歷或者移除操作的,大多數是遍歷操作的
下面介紹迭代器的使用:
ArrayList list=new ArrayList();
list.add("A");
list.add("B");
list.add("H");
list.add("E");
list.add("J");
Iterator ite=list.iterator();
while(ite.hasNext()){
System.out.println(ite.next());
}
public class Test2 {
public static void main(String[] args) {
int[][] arr = new int[][]{{10,20,30},{100,200,300}};
//int[] arr0 = arr[0]; // 取得二維陣列第一維的第一個陣列
//取得二維陣列的第一種方法 ,for回圈
for (int i = 0; i < arr.length; i++) { //二維陣列的長度指的是最外層的陣列長度
for (int j = 0; j < arr[i].length; j++) {
System.out.println(arr[i][j]);
}
}
//取得二維陣列的第二種方法,增強for回圈遍歷陣列
for (int[] childArr : arr) {
for (int number : childArr) {
System.out.println(number);}}}}
簡單的小栗子:
package sample;
public class arry {
public static void main(String[] args) {
// int[] arr = new int[20]; //添加陣列個數20
// for(int i=0;i<arr.length;i++)
// arr[i] = i;
int[] scores = new int[] {100,99,98};
for(int i = 0;i<scores.length;i++)
System.out.println(scores[i]);
// for(int score : scores)//增強遍歷
// System.out.println(score);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/151703.html
標籤:Java
上一篇:小書MybatisPlus第1篇-整合SpringBoot快速開始增刪改查
下一篇:Mybatis報錯:Mapped Statements collection does not contain value for x包.x類.x方法
