java collect

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

java collect是什麼,讓我們一起了解一下:

collect是一個終端操作,接收的參數是將流中的元素累積到彙總結果的各種方式(稱爲收集器),collect主要依賴java.util.stream.Collectors類內置的靜態方法。

那麼在流中的數據完成處理後,該如何將流中的數據重新歸集到新的集合裏?

因爲流不存儲數據,那麼在流中的數據完成處理後,需要將流中的數據重新歸集到新的集合裏叫歸集,toList、toSet和toMap比較常用,另外還有toCollection、toConcurrentMap等複雜一些的用法。

java collect

具體操作代碼如下:

List<Integer> list = Arrays.asList(1, 6, 3, 4, 6, 7, 9, 6, 20);        List<Integer> listNew = list.stream().filter(x -> x % 2 == 0).collect(Collectors.toList());        System.out.println("產生的新集合是:" + listNew);        Set<Integer> set = list.stream().filter(x -> x % 2 == 0).collect(Collectors.toSet());        System.out.println("產生的不重複的新集合是:" + set);        List<Person> 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<String> vowels = List.of("a", "e", "i", "o", "u");// sequential stream - nothing to combineStringBuilder 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 resultsStringBuilder result1 = vowels.parallelStream().collect(StringBuilder::new, (x, y) -> x.append(y),(a, b) -> a.append(",").append(b));System.out.println(result1.toString());