模型轉換、模型壓縮、模型加速工具
阿新 • • 發佈:2021-11-27
package com.lambda; import java.util.Arrays; import java.util.IntSummaryStatistics; import java.util.List; import java.util.Random; import java.util.stream.Collectors; import java.util.stream.Stream; /** Stream * @author qjw * @version V1.0 * @since 2021-12-02 09:14:00 */ public class Practice { public static void main(String[] args) { //建立一個數組1, 23, 4, 4, 22, 34, 45, 11, 33使用 lambda 求出陣列中的最小數將陣列去重, // 並將去重後陣列的每個元素乘以 2,再求出乘以 2 後的陣列的和,比如陣列1,2,3,3,去重後為1,2,3,乘以 2 後為2,4,6,最後的和為12。 int[] arr =new int[]{1, 23, 4, 4, 22, 34, 45, 11, 33}; System.out.println("最小值:"+ Arrays.stream(arr).min()); System.out.println("陣列去重*2求和:"+Arrays.stream(arr).distinct().map((i)->i*2).sum()); Arrays.stream(arr).sorted().forEach(System.out::println); //Stream 提供了新的方法 'forEach' 來迭代流中的每個資料 Random random=new Random(); random.ints().limit(10).forEach(System.out::println); //filter 方法用於通過設定的條件過濾出元素 List<String> strings=Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl"); System.out.println("原list:"+strings); List<String> filtered = strings.stream().filter(String -> !String.isEmpty()).collect(Collectors.toList()); long count = strings.parallelStream().filter(String -> !String.isEmpty()).count(); String mergedString = strings.stream().filter(String -> String.isEmpty()).collect(Collectors.joining(",")); List<String> collect = strings.stream().filter(String -> String.length() == 3).collect(Collectors.toList()); System.out.println("長度為3的字串:"+collect); System.out.println("過濾後序列list:"+filtered); System.out.println("過濾後list長度:"+count); System.out.println("合併字串:"+mergedString); //map 方法用於對映每個元素到對應的結果 求平方 List<Integer> numbers=Arrays.asList(3, 2, 2, 3, 7, 3, 5); System.out.println("原list:"+numbers); List<Integer> integerList = numbers.stream().map(i -> i * i).collect(Collectors.toList()); System.out.println("平方後list:"+integerList); //另外,一些產生統計結果的收集器也非常有用。它們主要用於int、double、long等基本型別上,它們可以用來產生類似如下的統計結果。 IntSummaryStatistics statistics = numbers.stream().mapToInt((x) -> x).summaryStatistics(); System.out.println("最大數:"+statistics.getMax()); System.out.println("最小數:"+statistics.getMin()); System.out.println("之和:"+statistics.getSum()); System.out.println("平均數:"+statistics.getAverage()); //sorted 方法用於對流進行排序 random.ints().limit(10).sorted().forEach(System.out::println); } } 輸出結果 最小值:OptionalInt[1] 陣列去重*2求和:346 1 4 4 11 22 23 33 34 45 1048817938 1474388850 -245761555 -1861499339 109951867 -2118280173 -53673656 799177281 -1867130854 1253033192 原list:[abc, , bc, efg, abcd, , jkl] 擷取後:java.util.stream.ReferencePipeline$2@41cf53f9 長度為3的字串:[abc, efg, jkl] 過濾後序列list:[abc, bc, efg, abcd, jkl] 過濾後list長度:5 合併字串:, 原list:[3, 2, 2, 3, 7, 3, 5] 平方後list:[9, 4, 4, 9, 49, 9, 25] 最大數:7 最小數:2 之和:25 平均數:3.5714285714285716 -1558320411 -1198681775 -962899507 -596476177 -213302277 -151212469 485692737 596302022 1469181499 2091743084