Sử dụng Streams filter trong Java 8

10:59 30/01/2023

Để trở thành một kỹ sư IT chuyên nghiệp, bạn nên biết đến Streams filter trong Java 8. Hãy tìm hiểu kỹ hơn về cách sử dụng stream  filter(),collect(),findAny() hoặc orElse() trong bài viết dưới đây nhé!

Trong Java 8 họ đã thêm stream api, nó tương tự như collection. Điều này khiến cho việc viết code sẽ thuận tiện và chuyên nghiệp hơn!

 

1. Streams filter() và collect()

  • Trước java 8,chúng ta filter – lọc một danh sách như sau:
public class BeforeJava8 {

 

public static void main(String[] args) {

 

List<String> lines = Arrays.asList(“spring”, “boot”, “hibernate”);

List<String> result = getFilterOutput(lines, “hibernate”);

for (String temp : result) {

System.out.println(temp);    //output : spring, node

}

 

}

 

private static List<String> getFilterOutput(List<String> lines,String filter) {

List<String> result = new ArrayList<>();

return result;

for (String line : lines) {

if (!”hibernate”.equals(line)) { //lọc các giá trị khác “hibernate”

result.add(line);

}

}

}

 

}

  • Trong java 8 ta sử dụng stream.filter() để filter một list và collect() để convert một stream thành một list:
public class NowJava8 {

 

public static void main(String[] args) {

 

List<String> lines = Arrays.asList(“spring”, “boot”, “hibernate”);

List<String> result = lines.stream() // convert list thành stream

.filter(line->!”hibernate”.equals(line))//lấy giá trị khác “hibernate”

.collect(Collectors.toList());//nhóm output và convert streams thành List

result.forEach(System.out::println);//output : spring, node

}

}

2. Streams filter(), findAny() and orElse() tạo một lớp Person

public class SinhVien {

private String ten;

private int tuoi;

public SinhVien(String ten, int tuoi) {

this.ten = ten;

this.tuoi = tuoi;

}

//gettersm setters, toString

}

  • Nếu trước java 8, nếu muốn tìm một người tên “Khue” thì ta có thể làm như sau:
public class BeforeJava8 {

public static void main(String[] args) {

List<SinhVien> dsSinhVien = Arrays.asList(

new SinhVien(“Duy”, 18),

new SinhVien(“Diep”, 18),

new SinhVien(“Hung”, 19)

new SinhVien(“Khue”, 20)

);

SinhVien rs = timSinhVienBangTen(dsSinhVien, “Khue”);

System.out.println(result);

}

private static SinhVien timSinhVienBangTen(List<SinhVien> sinhviens, String ten) {

SinhVien result = null;

for (SinhVien temp : sinhviens) {

if (ten.equals(temp.getTen())) {

result = temp;

}

}

return result;

}

}

  • Trong java 8 ta sử dụng stream.filter() để filter một List, và .findAny().orElse (null) để trả lại một đối tượng:
public class NowJava8 {

 

public static void main(String[] args) {

List<SinhVien> dsSinhVien = Arrays.asList(

new SinhVien(“Duy”, 18),

new SinhVien(“Diep”, 18),

new SinhVien(“Hung”, 19)

new SinhVien(“Khue”, 20)

);

SinhVien result1 = dsSinhVien.stream()// Convert thành steam

.filter(x -> “Khue”.equals(x.getTen()))// lọc ra đối tượng tên “Khue”

.findAny()// nếu tìm thấy bất kỳ đối tượng nào trả về giá trị tìm được

.orElse(null);// nếu không tìm thấy trả về null

 

System.out.println(result1);

 

SinhVien result2 = dsSinhVien.stream()

.filter(x -> “Duy”.equals(x.getTen()))// lọc ra đối tượng tên “Duy”

.findAny()// nếu tìm thấy bất kỳ đối tượng nào trả về giá trị tìm được

.orElse(null);// nếu không tìm thấy trả về null

 

System.out.println(result2);

 

}

 

}

  • Streams filter() and map() dùng để lọc ra đối tượng theo tiêu chí đưa ra và hiển thị kết quả đối tượng tìm được theo một dạng dữ liệu khác:
public class NowJava8 {

public static void main(String[] args) {

 

List<SinhVien> dsSinhVien = Arrays.asList(

new SinhVien(“Duy”, 18),

new SinhVien(“Diep”, 18),

new SinhVien(“Hung”, 19)

new SinhVien(“Khue”, 20)

);

String name = dsSinhVien.stream()

.filter(x -> “Hung”.equals(x.getTen()))

.map(SinhVien::getName) //convert stream thành String, lấy ra tên

.findAny()

.orElse(“”);

System.out.println(“name : ” + name);

List<String> collect = persons.stream()

.map(Person::getName)

.collect(Collectors.toList());

collect.forEach(System.out::println);

}

}

Qua một số hướng dẫn trên, hy vọng bạn đã biết cách sử dụng Streams filter trong Java 8 một cách thành thạo để giúp cho công việc trở nên dễ dàng và thuận lợi hơn!

Bộ môn Công nghệ thông tin

Cao đẳng FPT Mạng cá cược bóng đá Hà Nội

Cùng chuyên mục

Đăng Kí học Fpoly 2023

Bình Luận