增強for 迴圈
增強for迴圈
增強for迴圈的作用:簡化迭代器的書寫格式(增強for迴圈的底層還是使用了迭代器遍歷)
增強for迴圈的適用範圍:如果是實現了Iterable介面的物件或者陣列物件都可以使用增強for 迴圈
這裡注意:
1:增強for 迴圈底層使用迭代器獲取,只不過獲取迭代器由jvm完成,不需要獲取迭代器,所以使用增強for迴圈變數元素不準使用集合物件對集合元素個數進行修改.
2. 迭代器遍歷元素與增強for迴圈變數元素的區別:使用迭代器遍歷集合的元素時可以刪除集合的元素,而增強for迴圈變數集合的元素時,不能呼叫迭代器的remove方法刪除元素。
3. 普通for迴圈與增強for迴圈的區別:普通for迴圈可以沒有遍歷的目標,而增強for迴圈一定要有遍歷的目標。
public class Demo2 {
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();
//新增元素
set.add("狗娃");
set.add("狗剩");
set.add("鐵蛋");
/*
//使用迭代器遍歷Set的集合.
Iterator<String> it = set.iterator();
while(it.hasNext()){
String temp = it.next();
System.out.println("元素:"+ temp);
it.remove();
}
//使用增強for迴圈解決
for(String item : set){
System.out.println("元素:"+ item);
}
int[] arr = {12,5,6,1};
普通for迴圈的遍歷方式
for(int i = 0 ; i<arr.length ; i++){
System.out.println("元素:"+ arr[i]);
}
//使用增強for迴圈實現
for(int item :arr){
System.out.println("元素:"+ item);
}
//需求: 在控制檯列印5句hello world.
for(int i = 0 ; i < 5; i++){
System.out.println("hello world");
}
*/
//注意: Map集合沒有實現Iterable介面,所以map集合不能直接使用增強for迴圈,如果需要使用增強for迴圈需要藉助於Collection
// 的集合。
HashMap<String, String> map = new HashMap<String, String>();
map.put("001","張三");
map.put("002","李四");
map.put("003","王五");
map.put("004","趙六");
Set<Map.Entry<String, String>> entrys = map.entrySet();
for(Map.Entry<String, String> entry :entrys){
System.out.println("鍵:"+ entry.getKey()+" 值:"+ entry.getValue());
}
}
}
自定義類也可以使用增強for迴圈
package cn.itcast.jdk15;
import java.util.Iterator;
//自定一個類使用增強for迴圈
class MyList implements Iterable<String>{
Object[] arr = new Object[10];
int index = 0 ; //當前的指標
public void add(Object o){
arr[index++] = o; // 1
}
public int size(){
return index;
}
@Override
public Iterator<String> iterator() {
return new Iterator<String>() {
int cursor = 0;
@Override
public boolean hasNext() {
return cursor<index;
}
@Override
public String next() {
return (String) arr[cursor++];
}
@Override
public void remove() {
}
};
}
}
public class Demo3 {
public static void main(String[] args) {
MyList list = new MyList();
list.add("張三");
list.add("李四");
list.add("王五");
for(String item :list){
System.out.println(item);
}
}
}
相關文章
- JAVA基礎--增強for迴圈Java
- list增強for迴圈刪除元素報錯
- 增強for迴圈注意空集合問題
- 集合------集合框架Collection/Iterator迭代器/增強for迴圈框架
- 使用增強型for迴圈(for-each)相比傳統的for迴圈有什麼區別?
- 【Java】增強for迴圈,三種迭代的能否刪除Java
- Java中的增強for迴圈(for each)的實現原理與坑Java
- Python如何強制結束迴圈?Python
- for 迴圈與 while 迴圈While
- while迴圈 case迴圈While
- C語言——迴圈結構(for迴圈,while迴圈,do-while迴圈)C語言While
- Spring Boot 2.6.0正式釋出:預設禁止迴圈依賴、增強Docker映象構建...Spring BootDocker
- 思考工具之加強反饋迴圈 | Untools
- 無限for迴圈(死迴圈)
- while迴圈以及do while迴圈While
- Python強制結束迴圈的5種方法!Python
- java基礎(三) 加強型for迴圈與IteratorJava
- if迴圈
- 迴圈
- for迴圈
- if for迴圈
- For 迴圈
- 04流程控制 for迴圈,while迴圈While
- 11C++迴圈結構-for迴圈(1)C++
- for迴圈、break和continue、二重迴圈
- 【基礎題】【for迴圈】二重迴圈
- Uber、Slack等如何構建產品增長迴圈? - bandanjot
- na聚合全網優質流量,助力正向迴圈增長
- Java迴圈Java
- javaScript for迴圈JavaScript
- 事件迴圈事件
- while迴圈While
- pythonfor迴圈Python
- 迴圈群
- javascript迴圈JavaScript
- Kotlin 迴圈Kotlin
- JavaScript for of 迴圈JavaScript
- 迴圈引用