java collect是什么,讓我們一起了解一下:
collect是一個終端操作,接收的參數是將流中的元素累積到匯總結果的各種方式(稱為收集器),collect主要依賴java.util.stream.Collectors類內置的靜態方法。
那么在流中的數據完成處理后,該如何將流中的數據重新歸集到新的集合里?
因為流不存儲數據,那么在流中的數據完成處理后,需要將流中的數據重新歸集到新的集合里叫歸集,toList、toSet和toMap比較常用,另外還有toCollection、toConcurrentMap等復雜一些的用法。
具體操作代碼如下:
List?list?=?Arrays.asList(1,?6,?3,?4,?6,?7,?9,?6,?20); ????????List ?listNew?=?list.stream().filter(x?->?x?%?2?==?0).collect(Collectors.toList()); ????????System.out.println("產生的新集合是:"?+?listNew); ????????Set ?set?=?list.stream().filter(x?->?x?%?2?==?0).collect(Collectors.toSet()); ????????System.out.println("產生的不重復的新集合是:"?+?set); ????????List ?personList?=?new?ArrayList<>(); ????????personList.add(new?Person("Tom",?8900,?22,?"male",?"New?Yark")); ????????personList.add(new?Person("Jack",?7000,?29,?"male",?"Washington")); ????????personList.add(new?Person("Lily",?7800,?24,?"female",?"Washington")); ????????personList.add(new?Person("Anni",?8200,?28,?"female",?"New?Yark")); ????????personList.add(new?Person("Owen",?9500,?26,?"male",?"New?Yark")); ????????personList.add(new?Person("Alisa",?7900,?27,?"female",?"New?Yark")); ????????Map,?Person>?personMap?= ????????????????personList.stream().filter(p?->?p.getSalary()?>?8000).collect(Collectors.toMap(Person::getName, ????????????????????????p?->?p)); ????????System.out.println("產生的新的map集合是:"?+?personMap);
拓展一下:在java中,流stream中的collect()方法詳解如下:
List?vowels?=?List.of("a",?"e",?"i",?"o",?"u"); //?sequential?stream?-?nothing?to?combine StringBuilder?result?=?vowels.stream().collect(StringBuilder::new,?(x,?y)?->?x.append(y), (a,?b)?->?a.append(",").append(b)); System.out.println(result.toString()); //?parallel?stream?-?combiner?is?combining?partial?results StringBuilder?result1?=?vowels.parallelStream().collect(StringBuilder::new,?(x,?y)?->?x.append(y), (a,?b)?->?a.append(",").append(b)); System.out.println(result1.toString());
以上就是小編今天的分享了,希望可以幫助到大家。