list轉map stream_advancedday10可變引數不可變集合及Stream流
阿新 • • 發佈:2020-12-18
技術標籤:list轉map streamstream map方法stream()獲取重複的值stream流stream獲取list中的某個元素集合獲取list集合中某一元素的值
可變引數
可變引數指的是,方法引數的個數可以發生改變。但是其本質是一個數組,在方法把可變引數當做陣列來使用就可以了。
//可變引數的格式:資料型別...引數名public static void 方法名(資料型別... 引數名){ ...}
求多個整數的和,程式碼如下
public static void main(String[] args){ getSum(1,2,3,4,5); //15 getSum(1,2,3); //6 int[] array={1,2,3,4,5}; getSum(array); //15}//求多個整數的和public static void getSum(int... array){ int sum=0; for(int i=0;i<array.length;i++){ sum+=array[i]; } System.out.println("所有整數的和為:"+sum);}
建立不可變的集合
//建立List集合,並新增元素List<元素型別> list= List.of(元素1,元素2....);//建立Set集合,並新增元素Set<元素型別> set = Set.of(元素1,元素2....);//建立Map集合,並新增元素Map<鍵的型別,值的型別> map = Map.of(鍵1,值1,鍵2,值2);Map<鍵的型別,值的型別> map = Map.ofEntries(Map.entry(鍵1,值1),Map.entry(鍵2,值2));
Stream流
Stream流指的是流式程式設計,可以讓我們操作集合或者陣列的時候更加方便。
Stream流的操作步驟
獲取流操作
//單列集合獲取流Stream<元素型別> s1 = 集合名.stream();//雙列集合獲取流Stream<鍵的型別> s2 = map.keySet().stream();Stream<值的型別> s3 = map.values().stream();Stream<鍵值對的型別> s5 = map.entrySet().stream();//陣列獲取流Stream<元素型別> s6 = Arrays.stream(陣列名);//多個數據獲取流Stream<元素型別> s7 = Stream.of(元素1,元素2...);
轉換流操作
fliter: 對流中的元素進行過濾limit: 擷取前面的n個元素skip: 跳過前面的n個元素concat: 合併兩個流物件 Stream s = Stream.concat(流1,流2);distinct: 去重重複元素 如果元素的hashCode和euqals判斷都相同,才認為元素重複
終結操作
forEach: 遍歷元素count: 元素個數collect: 把流中的元素收集到集合中 Collectors.toList(); //轉換為List集合 Collectors.toSet(); //轉換為Set集合 Collectors.toMap( lambda表示式1, //返回鍵 lambda表示式2, //返回值 ); //轉換為Map集合
Stream流練習
ArrayList<String> list1=new ArrayList<>();list1.add("楊過");list1.add("楊簡");list1.add("張三丰");list1.add("張無忌");list1.add("劉德華");ArrayList<String> list2=new ArrayList<>();list2.add("楊冪");list2.add("楊紫");list2.add("劉曼");list2.add("黃晶");list2.add("張柏芝");list2.add("張曼玉");//1.獲取男演員的三個字的姓名,擷取前面前面2個Stream<String> s1 = list1.stream().filter(s -> s.length() == 3).limit(2);//2.獲取女演員的兩個字的姓名, 跳過前面1個Stream<String> s2 = list2.stream().filter(s -> s.length() == 2).skip(1);//3.把男演員和女演員合併Stream<String> s3 = Stream.concat(s1, s2);//4.把剩下的所有姓名,封裝為Actor物件s3.forEach(s-> System.out.println(new Actor(s)));