package com.test.controller;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
public class A {
public static void main(String[] args) {
ArrayList<String>list=new ArrayList<>();
list.add("1");
list.add("make");//add是將傳入的參數當String看,哪怕傳入一個很長的list,也只算一個
list.add("2");
System.out.println("巔峯時期的list"+list);
list.remove(0);//list中,remove後接的是索引
System.out.println("失去了第一個數的list"+list);
System.err.println("============分析HashSet與ArrayList表示:ArrayList可以直接裝入HashSet元素 和刪除元素 互通的============");
HashSet<String> set=new HashSet<>();
set.add("make");
System.out.println("set包含了"+set);
System.out.println("list是否包含set "+list.containsAll(set));//list和set是可以相互包含的
list.removeAll(set);
System.out.println("removeAll(set)之後的list"+list);
list.addAll(set);//addAll是將傳入的參數當list看,有多少加多少,類似的removeAll,containsAll都如此
System.out.println("addAll(set)之後的list"+list);
System.err.println("============分析Iterator與ArrayList============");
list.add("jack");//add只表示加入一個字符串
list.add("howk");
//在java集合中,使用專門的迭代器進行遍歷
Iterator<String> it=list.iterator();
System.out.println("添加了jack和howk後,現在list的元素包含:"+list);
// 以前老套的迭代器做法
System.err.println();
System.err.println("============老套的迭代器遍歷,表示用了此遍歷,就沒法使用list.iterator().forEachRemaining來遍歷了,只能遍歷一次============");
while(it.hasNext()) {
System.out.print(it.next()+" ");
}
System.err.println();
System.err.println("============非常高逼格的使用迭代器Lambda表達式遍歷:list.iterator().forEachRemaining==========");
it.forEachRemaining(String->System.out.print(String+" "));
System.err.println();
System.err.println("============第二次高逼格,顯然已經輸不出來了:表示list.iterator().forEachRemaining只能只能用一次==第二次在遍歷就遍歷不出來數據了,哈哈=====");
it.forEachRemaining(String->System.out.print(String+" "));
System.out.println();
System.err.println("========我foreach的迭代元素爲=====");
//對於list中的每一個String,我都要輸出,帥!
list.forEach(String->System.out.print(String+" "));//Lambda表達式
System.out.println();
// forEach和forEachRemaining區別不大,可以換着用,但是這個第二次能輸出來
System.err.println("我Foreach還可以來第二次");
list.forEach(String->System.out.print(String+" "));//Lambda表達式
System.out.println();
System.out.println(list.get(0)+"的長度是"+list.get(0).length());
System.out.println(list.get(1)+"的長度是"+list.get(1).length());
System.out.println(list.get(2)+"的長度是"+list.get(2).length());
//刪除list中的所有長度大於2的字符串型元素
System.err.println("===========這是另一種Lamdba表達式,ele表示元素,效果是去掉list中所有長度大於2的元素========");
list.removeIf(ele->((String)ele).length()>2);
System.out.println("用removeIf取出長度大於2的字符串後list爲"+list);
System.err.println();
System.err.println("總結:foreach與forEachRemaining是可以依託於迭代器通過Lamdba遍歷的,其中forEachRemaining只能用一次");
System.err.println("總結:foreach與forEachRemaining是可以依託於迭代器通過Lamdba遍歷的,其中forEachRemaining只能用一次");
}
}
巔峯時期的list[1, make, 2]
失去了第一個數的list[make, 2]
============分析HashSet與ArrayList表示:ArrayList可以直接裝入HashSet元素 和刪除元素 互通的============
set包含了[make]
list是否包含set true
removeAll(set)之後的list[2]
addAll(set)之後的list[2, make]
============分析Iterator與ArrayList============
添加了jack和howk後,現在list的元素包含:[2, make, jack, howk]
============老套的迭代器遍歷,表示用了此遍歷,就沒法使用list.iterator().forEachRemaining來遍歷了,只能遍歷一次============
2 make jack howk
============非常高逼格的使用迭代器Lambda表達式遍歷:list.iterator().forEachRemaining==========
============第二次高逼格,顯然已經輸不出來了:表示list.iterator().forEachRemaining只能只能用一次==第二次在遍歷就遍歷不出來數據了,哈哈=====
========我foreach的迭代元素爲=====
2 make jack howk
我Foreach還可以來第二次
2 make jack howk
2的長度是1
make的長度是4
jack的長度是4
===========這是另一種Lamdba表達式,ele表示元素,效果是去掉list中所有長度大於2的元素========
用removeIf取出長度大於2的字符串後list爲[2]
總結:foreach與forEachRemaining是可以依託於迭代器通過Lamdba遍歷的,其中forEachRemaining只能用一次
總結:foreach與forEachRemaining是可以依託於迭代器通過Lamdba遍歷的,其中forEachRemaining只能用一次