MIX Fold3包裝盒泄露 新機本月登場
小米的全新折疊屏旗艦MIX Fold3將于本月發布,近日該機的真機包裝盒在網上泄露。從圖上來看,新的MIX Fold3包裝盒在外觀設計方面延續了之前的方案,變化不大,這也是目前小米旗艦
在Java中,foreach 是一個常用的循環結構,它可以極大地簡化遍歷數組或集合(例如 List 或 Set)的代碼。它通常被認為是一種更加簡潔和易讀的迭代方式。然而,可能有一些情況下不建議使用 foreach 循環:
// 使用迭代器來安全地移除集合中的元素:import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class RemoveElement { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("A"); list.add("B"); list.add("C"); Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { String item = iterator.next(); if (item.equals("B")) { iterator.remove(); // 安全移除元素 } } System.out.println(list); // 輸出結果將不包含"B" }}
// 使用傳統的for循環處理原始類型數組:public class PerformanceSensitive { public static void main(String[] args) { int[] numbers = {1, 2, 3, 4, 5}; // 使用傳統 for 循環來避免可能的性能開銷 for (int i = 0; i < numbers.length; i++) { System.out.println(numbers[i]); } }}
// 通過傳統的for循環獲取索引并修改數組或列表中的元素:import java.util.ArrayList;import java.util.List;public class ModifyElement { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("apple"); list.add("banana"); list.add("cherry"); for (int i = 0; i < list.size(); i++) { list.set(i, list.get(i).toUpperCase()); } System.out.println(list); // 所有元素變為大寫 }}
// 使用傳統的for循環以獲取元素的索引:import java.util.ArrayList;import java.util.List;public class NeedIndex { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("one"); list.add("two"); list.add("three"); for (int i = 0; i < list.size(); i++) { System.out.println("Index " + i + ": " + list.get(i)); } }}
// 假設有兩相關聯的集合,一個是鍵的列表 keys,另一個是值的列表 valuesList<String> keys = Arrays.asList("key1", "key2", "key3");List<String> values = Arrays.asList("value1", "value2", "value3");// 使用傳統的 for 循環同時遍歷 keys 和 values 集合for (int i = 0; i < keys.size() && i < values.size(); i++) { String key = keys.get(i); String value = values.get(i); System.out.println(key + ": " + value);}
import java.util.List;import java.util.concurrent.CopyOnWriteArrayList;public class ForeachCopyOnWriteExample { public static void main(String[] args) { // 使用 CopyOnWriteArrayList 創建線程安全的 ArrayList List<String> list = new CopyOnWriteArrayList<>(); list.add("Element1"); list.add("Element2"); list.add("Element3"); // 使用 foreach 循環遍歷 CopyOnWriteArrayList for (String element : list) { System.out.println(element); // 此處修改集合內容不會影響迭代,因為使用的是集合快照 list.add("ElementNew"); } // 最后打印集合的內容,可以看到新元素已經被添加 System.out.println("After modifications:"); for (String element : list) { System.out.println(element); } }}
CopyOnWriteArrayList 類創建了一個線程安全的集合。當我們在 foreach 循環中遍歷集合并同時向其中添加新元素時,由于 CopyOnWriteArrayList 內部實現了對原始集合的復制(即創建了快照),foreach 循環使用的是開始迭代時的集合狀態,所以迭代過程中集合狀態的改變不會影響到迭代本身。這可能導致大量內存的額外消耗,尤其是當集合很大時。
本文鏈接:http://www.www897cc.com/showinfo-26-43330-0.htmlJava中不建議使用foreach的六大場景
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: Matplotlib中的titles(標題)、labels(標簽)和legends(圖例)
下一篇: 測試左移與提測流水線的應用實踐