1. 程式人生 > >集合foreach迴圈和三種迭代的刪除

集合foreach迴圈和三種迭代的刪除

增強for—foreach迴圈

* 簡化陣列和Collection集合的遍歷
格式:
for(元素資料型別 變數 : 陣列或者Collection集合) {
使用變數即可,該變數就是元素
}
好處
* 簡化遍歷

三種迭代的能否刪除

import java.util.ArrayList;
import java.util.Iterator;
import bean.Person;
public class g {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] arr = {11,22,33,44,55};
		for (int i : arr) {
			System.out.println(i);
		}
		
		ArrayList<String> list = new ArrayList<>();
		list.add("a");
		list.add("b");
		list.add("c");
		list.add("d");
		for (String string : list) {
			System.out.println(string);
		}
		
		ArrayList<Person> alist = new ArrayList<>();
		alist.add(new Person("張三", 23));
		alist.add(new Person("李四", 24));
		alist.add(new Person("王五", 25));
		alist.add(new Person("趙六", 26));
		for (Person person : alist) {
			System.out.println(person);
		}
		
		
		
		ArrayList<String> list1 = new ArrayList<>();
		list1.add("a");
		list1.add("b");
		list1.add("c");
		list1.add("d");
		
		//1,普通for迴圈刪除
		for(int i = 0; i < list1.size(); i++) {
			if("b".equals(list1.get(i))) {
				list1.remove(i);//通過索引刪除元素
			}
		}
		System.out.println(list1);//[a, c, d]

		ArrayList<String> list2 = new ArrayList<>();
		list2.add("a");
		list2.add("b");
		list2.add("b");
		list2.add("c");
		list2.add("d");
		
		list2.add("e");
		list2.add("f");
		list2.add("g");
		//1,普通for迴圈刪除,索引要--
		for(int i = 0; i < list2.size(); i++) {
			if("b".equals(list2.get(i))) {
				list2.remove(i);//通過索引刪除元素
				//當刪除索引為1的b時,此刻後面的索引全部向前走第二個索引為2的b向前一步他的索引即變為1
				//此刻i的值為1,執行後i++變為2,即後來索引為1的b不被判斷
				//應該list2.remove(i--);
			}
		}
		System.out.println(list2);//[a, b, c, d]
		
		
		//2,迭代器刪除
		Iterator<String> it = list2.iterator();
		while(it.hasNext()) {
			if("e".equals(it.next())) {
				//list2.remove("e");	
				//不能用集合的刪除方法,因為迭代過程中如果集合修改會出現併發修改異常
				// java.util.ConcurrentModificationException
				it.remove();
			}
		}
		System.out.println(list2);//[a, b, c, d, f, g]
		//第二種
		for(Iterator<String> it2 = list2.iterator(); it2.hasNext();) {
			if("f".equals(it2.next())) {
				//list.remove("f");//不能用集合的刪除方法,因為迭代過程中如果集合修改會出現併發修改異常
				it2.remove();
			}
		}
		System.out.println(list2);//[a, b, c, d, g]
		
		
		//3,增強for迴圈,增強for迴圈不能刪除,只能遍歷
		for (String string : list) {
			if("d".equals(string)) {
				//list2.remove("d");
			}
		}
		System.out.println(list2);

	}
}


相關推薦

集合foreach迴圈刪除

增強for—foreach迴圈 * 簡化陣列和Collection集合的遍歷 格式: for(元素資料型別 變數 : 陣列或者Collection集合) { 使用變數即可,該變數就是元素 } 好處 * 簡化遍歷 三種迭代的能否刪除 import java.util.Arr

的能否刪除

public class Demo1_Foreach { /** * * A:增強for概述 * 簡化陣列和Collection集合的遍歷 * B:格式: * for(元素資料型別 變數 : 陣列或者Collection集合) { 使用變數即可,該變

ArrayList之方法

Collection cn = new ArrayList(2); cn.add(123); cn.add(123); cn.add("fd");

集合框架之的能否刪除

-- 16px size ren 中修改 exce .get rem cat 一:普通for循環的刪除 1 // 普通for循環,通過索引刪除,刪除後索引要-- 2 for (int i = 0; i < list.size(); i++) { 3

python 入門第物件Iterable器Iterator

迭代物件Iterable和迭代器Iterator __author__ = 'admin' from collections.abc import Iterator from collections.abc import Iterable print(isinstance([],Iterable)) p

分析IteratorListIiterator這兩器~

首先需要明確一點:迭代器指向的位置是元素之前的位置,如圖所示: 假設集合List是由List1、List2和List3組成,當使用語句:Iterator it=List.iterator()時,迭代器it指向的位置是上圖中Iterator1指向的位置,當使用語句:it.

數學建模 單變數優化求解 牛頓

#include<iostream> #include<cmath> using namespace std; double f(double x); double f1(do

Python五方式 for迴圈,列表推導式,內建函式map(),生成器推導式,生成器函式 速度對比

對比了Python3的五種迭代方式進行函式簡單計算的花費時間 五種迭代分別是,for迴圈,列表推導式,內建函式map(),生成器推導式,生成器函式 簡單計算以add()加10操作和abs()絕對值舉例

JavaScript中BOOLEAN類型之情景碼舉例

flag art 代碼 解讀 track .org lan 對象 alert <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w

繼承方式訪問權限

-a prot play 9.png png -h .cn orm font 也就是說子類只能訪問父類的保護和公有成員,而對象只能訪問公有成員。繼承方式 1. 三種繼承方式不影響子類對父類的訪問權限,子類對父類只看父類的訪問控制權。 2. 繼承

Java中List集合遍歷的方式

asn tex iter for nbsp next next() ray string 首先創建一個List集合: List<String> list = new ArrayList<String>();list.add("name"); list

./..//路徑的區別

text 什麽 mage 鏈接 body bubuko href 根目錄 nbsp 本文為博主原創,未經允許不得轉載: 在JavaScript中,經常用到./和../及/路徑訪問指定的資源,但三者有什麽區別: ./表示當前目錄 ../表示

mybatis 中 foreach collection的用法

app key bsp arr onf array數組 自己 構建 符號 轉載:http://blog.sina.com.cn/s/blog_b0d90e8c0102v1q1.html 傳參參考:http://www.cnblogs.com/ruiati/p/6410339

應用負載均衡之LVS(一):基本概念模式

保存 訪問 方式 video big key vhdl cisc vid 網站架構中,負載均衡技術是實現網站架構伸縮性的主要手段之一。所謂"伸縮性",是指可以不斷向集群中添加新的服務器來提升性能、緩解不斷增加的並發用戶訪問壓力。通俗地講,就是一頭牛拉不動時,就用兩頭、三

Hibernate學習筆記2.4(Hibernate核心開發接口狀態)

thread rsa 分享 action let 能力 ima 方法 如果 1.configuration(配置信息管理,產生sessionfactory) sessionfactory管理一系列的連接池 opensession 永遠打開新的,需要手動close get

集合之List中的列表

List集合特有的迭代器,ListIterator是Iterator是Iterator的子介面 在迭代式,不可以通過集合物件的方法操作集合中的元素 因為會發生ConcurrentModificationException異常 所以,在迭代器時,只能用迭代器的方法操作元素,可是Iterea

逆冪求最大最小特徵值

參考連結 https://wenku.baidu.com/view/ee7ecbeca98271fe910ef9fc.html?from=search 冪迭代演算法: 逆冪迭代演算法: 實際在使用中A可以先進行LU分解   無論是冪迭代,還是逆冪迭代,只能求出最大和最

淺析Android Camera開發中的個尺寸變形 貢獻一個自適配PicturesizePreviewsiz

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

python 學習筆記(基礎輸入輸出,字串,迴圈陣列)

學習python發現這門語言和其他語言有很多不同之處,比如python的變數不需要要宣告型別,python是解釋性語言所以要注意函式定義的位置,python注重程式碼格式而不注重符號。python方便得陣列元組和強大的內建爬蟲庫。寫的可能不夠詳細不夠好但是主要想通過文章以後看的時候回想知

Java程式設計師從笨鳥到菜鳥之(十二)大話設計模式(二)設計模式分類工廠模式

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!