Java的Stream流中的常用方法forEach,Arrays.stream(xxx).forEach


Arrays.stream(xxx).forEach,一直使用Java8 但是新特性卻是沒怎么用過,借此項目機會,用到的都記錄下來。

案例1:

List<String> updList = new ArrayList<>();
List<String> delList = new ArrayList<>();

for (int i = 0; i < 1; i++) {
            String uu = "test1-test2-test3-test4";
            updateList.add(uu); //updateList中存儲 test1-test2-test3-test4
        }

for (String tmp : updateList) {
            Arrays.stream(tmp.split("-")).forEach(str -> {
                delList.add("TEST_" + str); //delList中存儲: TEST_test1 TEST_test2 ...
            });
        }

        for (String s : delList) {
            System.out.println(s);
        }

//輸出結果:TEST_test1 TEST_test2 TEST_test3 TEST_test4

 

案例2:

import java.util.stream.Stream;

/*
 * Stream流中的常用方法_forEach
 * void forEach(Consumer<? super T>) action;
 * 該方法接受一個Consumenr接口函數,會將每一個流元素交給函數進行處理
 * Consumer接口是一個消費型的函數式接口,可以傳遞Lambda表達式,消費數據
 * 簡單記:
 *   forEach方法,用來遍歷流中的數據
 *   是一個終結方法,遍歷之后就不能繼續調用Stream流中的其他方法
 */
public class demoforeach {
    public static void main(String[] args) {
        //獲取一個Stream流
        Stream<String> stream = Stream.of("a", "b");
        //使用Stream流中的方法forEach對Stream流中的數據進行遍歷
        //
        //stream.forEach((String name)->{
        //  System.out.println(name);
        //});
        stream.forEach(name -> System.out.println(name));

    }
}

案例3:按格式輸出一個object對象的屬性值

    public static void printObject(Object ob) {
        Field[] fields = ob.getClass().getDeclaredFields();//獲取所有屬性
        String s = ob.getClass().getName();
        System.out.print( s.substring( s.lastIndexOf(".")+1 )+ " {");
        Arrays.stream(fields).forEach(field -> {
            //獲取是否可訪問
            boolean flag = field.isAccessible();
            try {
                //設置該屬性總是可訪問
                field.setAccessible(true);
                System.out.print( field.getName() + "=" + field.get(ob) + ", ");
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
            //還原可訪問權限
            field.setAccessible(flag);
        });
        System.out.println("}");
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM