Mọi thứ bạn cần biết về Stream trong Java



Bài viết này sẽ giới thiệu cho bạn về Stream trong Java, một gói được giới thiệu gần đây trong Java và giải thích chi tiết về những gì nó có thể làm.

Một gói bổ sung mới trong Java 8, được gọi là java.util.stream đã được thêm vào người dùng để có trải nghiệm lập trình hiệu quả. Một luồng có thể được định nghĩa là một chuỗi các đối tượng, hỗ trợ nhiều phương thức. Trong bài viết này, chúng tôi sẽ khám phá Luồng trong

Các gợi ý sau sẽ được đề cập trong Điều này,





Trước khi bắt đầu với bài viết này về Stream In Java, chúng ta hãy xem một số tính năng quan trọng,

Stream In Java: Các tính năng

  • Luồng không phải là cấu trúc dữ liệu và không lưu trữ các phần tử. Bộ sưu tập, Mảng hoặc Kênh I / O là nơi lấy dữ liệu đầu vào.
  • Nguồn của luồng vẫn không bị sửa đổi sau khi các hoạt động được thực hiện trên đó. Ví dụ: lọc một luồng chỉ đơn giản là tạo ra một luồng mới mà không có các phần tử được lọc, thay vì sửa đổi luồng gốc.
  • Các hoạt động tổng hợp như lọc, giảm, so khớp, tìm, v.v. được hỗ trợ bởi luồng.
  • Sự lười biếng có thể được coi là một đặc điểm của luồng, vì nó chỉ đánh giá các mã khi được yêu cầu.
  • Việc truy cập các phần tử có trong luồng chỉ có thể được thực hiện một lần trong suốt thời gian tồn tại của luồng. Một luồng mới phải được tạo để truy cập lại các phần tử giống nhau có trong nguồn.

Tiếp tục với bài viết này trên Stream trong Java



Tạo luồng

Luồng có thể được tạo bằng các phương pháp sau:

  • suối() - Một luồng tuần tự được trả về.Bộ sưu tậpđược coi là nguồn.
  • llelStream () - Một luồng song song được trả về. Bộ sưu tập được coi là nguồn.
Danh sách chuỗi = Arrays.asList ('Xin chào', '', 'Xin chào', 'Hola', 'Bonjour', '', 'Namaste') Danh sách filter = string.stream (). Filter (string ->! String. isEmpty ()). collect (Collectors.toList ())

Tiếp tục với bài viết này trên Stream trong Java

Hoạt động trên Luồng:

Hoạt động trung gian:

bản đồ



Các phần tử hiện diện trong tập hợp có thể được ánh xạ tới các đối tượng khác theo vị từ được truyền dưới dạng đối số. Ví dụ sau được sử dụng để hiển thị các ô vuông duy nhất của các số bằng phương pháp bản đồ.

Danh sách num = Arrays.asList (5,4,4,2,3,3) Danh sách các hình vuông = num.stream (). Map (y -> y * y) .distinction (). Collect (Collectors.toList ())

bộ lọc

Có thể loại bỏ các phần tử trên cơ sở một tiêu chí bằng cách sử dụng phương pháp này.

Danh sách tên = Arrays.asList ('Thứ bảy', 'Chủ nhật', 'Thứ năm') Danh sách res = name.stream (). Filter (s-> s.startsWith ('S')). Thu thập (Collectors.toList () )

sắp xếp

Luồng có thể được sắp xếp bằng cách sử dụng phương pháp này.

Danh sách name = Arrays.asList ('Thứ bảy', 'Chủ nhật', 'Thứ năm') Danh sách res = name.stream (). Sorted (). Collect (Collectors.toList ())

Phát trực tiếp trong Java: Hoạt động đầu cuối:

sưu tầm

Kết quả của quá trình xử lý trên các phần tử của một luồng có thể được kết hợp bằng cách sử dụng thao tác thu thập.

Danh sách num = Arrays.asList (4,3,2,5,6) Đặt res = num.stream (). Map (y-> y * y) .collect (Collectors.toSet ())

cho mỗi

Phương thức này được sử dụng để lặp qua mọi phần tử có trong luồng.

Danh sách num = Arrays.asList (4,3,2,5) num.stream (). Map (x-> x * x) .forEach (y-> System.out.println (y))

giảm

Các phần tử của luồng có thể được giảm xuống một giá trị duy nhất bằng cách sử dụng phương pháp này.

List num = Arrays.asList (4,3,2,5) int Even = num.stream (). Filter (x-> x% 2 == 0) .reduce (0, (res, i) -> res + Tôi)

Biến res được gán giá trị 0 ban đầu và tôi được thêm vào đó.

Tiếp tục với bài viết này trên Stream trong Java

Lọc

Mã có thể được lọc bằng cách sử dụng phương pháp luồng. Trong ví dụ sau, giá của các công cụ được lọc ra.

import java.util. * import java.util.stream.Collectors class Instrument {int num String name float price public Instrument (int num, String name, float price) {this.num = num this.name = name this.price = price}} public class Test {public static void main (String [] args) {List toolsList = new ArrayList () // Thêm sản phẩm toolsList.add (new Instrument (1, 'Guitar', 15000f)) toolsList.add (new Instrument (2, 'Piano', 18000f)) toolsList.add (new Instrument (3, 'Flute', 15000f)) toolsList.add (new Instrument (4, 'Drums', 48000f)) toolsList.add (Nhạc cụ mới ( 5, 'Ukulele', 32000f)) List InstrumentPriceList2 = toolsList.stream () .filter (p -> p.price> 30000) // lọc dữ liệu .map (p-> p.price) // tìm nạp giá .collect ( Collectors.toList ()) // thu thập dưới dạng danh sách System.out.println (InstrumentPriceList2)}}
 Đầu ra: 

[48000.0, 32000.0]

cách triển khai ứng dụng java trong aws

Tiếp tục với bài viết này trên Stream trong Java

Lặp lại:

Lặp lại có thể được thực hiện bằng cách sử dụng luồng trong java.

import java.util.stream. * public class Test {public static void main (String [] args) {Stream.iterate (1, element-> element + 1) .filter (element-> element% 4 == 0). giới hạn (6) .forEach (System.out :: println)}}

Đầu ra:

4

số 8

12

16

hai mươi

24

Hãy xem một ví dụ khác, để hiểu khái niệm Stream trong java hiệu quả hơn.

Thí dụ:

import java.util. * import java.util.stream. * public class Test {public static void main (String args []) {// tạo danh sách các số nguyên Danh sách num = Arrays.asList (6,7,8,9 ) // sử dụng phương thức bản đồ Liệt kê các hình vuông = num.stream (). map (y -> y * y). thu thập (Collectors.toList ()) System.out.println (square) // tạo danh sách Chuỗi ngày trong danh sách = Arrays.asList ('Friday', 'Saturday', 'Sunday') // phương pháp lọc Danh sách res = days .stream (). filter (s-> s.startsWith ('S')). thu thập (Collectors.toList ()) System.out.println (res) // phương pháp đã sắp xếp Danh sách hiển thị = days.stream (). sorted (). collect (Collectors.toList ()) System.out.println (display) / / tạo danh sách các số nguyên Danh sách number = Arrays.asList (6,9,5,7,1) // phương thức thu thập trả về một tập hợp Đặt sqSet = number.stream (). map (y-> y * y) .collect (Collectors.toSet ()) System.out.println (sqSet) // forEach method num.stream (). Map (y-> y * y) .forEach (x-> System.out.println (x)) / / Reduce method int Even = num.stream (). filter (x-> x% 2 == 0) .reduce (0, (result, i) -> result + i) System.out.println (Even)}}

Đầu ra:

[36, 49, 64, 81]

[Thứ bảy Chủ Nhật]

[Thứ sáu Thứ Bảy Chủ nhật]

[81, 49, 1, 36, 25]

36

49

64

81

14

Luồng cho phép người dùng thực hiện các thao tác trên các phần tử một cách hiệu quả.

Vì vậy, chúng ta đã kết thúc bài viết này về 'Stream trong Java'. Nếu bạn muốn tìm hiểu thêm, hãy xem Đào tạo Java của Edureka, một công ty học trực tuyến đáng tin cậy. Khóa đào tạo và cấp chứng chỉ Java J2EE và SOA của Edureka được thiết kế để đào tạo bạn về cả khái niệm Java cốt lõi và nâng cao cùng với các khung công tác Java khác nhau như Hibernate & Spring.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần nhận xét của blog này và chúng tôi sẽ liên hệ lại với bạn trong thời gian sớm nhất.