java集合中對contains,foreach,forEachRemaining,lambda表達式的使用

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只能用一次

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章