Thâm nhập lý giải Java 8 đích lưu thức API: Giản hóa đại mã, đề thăng hiệu suất

在这里插入图片描述

Thâm nhập lý giải Java 8 đích lưu thức API: Giản hóa đại mã, đề thăng hiệu suất

Java 8 dẫn nhập liễu Stream API, tha đề cung liễu nhất chủng tân đích trừu tượng, khả dĩ canh phương tiện địa đối tập hợp tiến hành thao tác hòa xử lý.

Tưởng thâm nhập liễu giải Stream lưu đích tiểu hỏa bạn khả dĩ khán khán ngã dĩ tiền đíchNguyên mã văn chương:

1,Thâm độ giải tích Java JDK 1.8 trung Stream lưu đích nguyên mã thật hiện: Đái nhĩ tham tầm sổ cư lưu đích áo bí _jdk trung đích lưu -CSDN bác khách

2,Java lưu thao tác giải tích: Thâm độ phẩu tích trung gian thao tác, chung đoan thao tác dữ tịnh hành xử lý cơ chế _ lưu thao tác trung gian thao tác hữu na ta -CSDN bác khách

Nhất, lưu Stream

Stream API duẫn hứa ngã môn dĩ nhất chủng thanh minh tính đích phương thức xử lý sổ cư, chi trì hàm sổ thức biên trình phong cách.

String lưu chủ yếu đặc tính hòa dụng pháp:

  1. Sang kiến lưu:
    • Tòng tập hợp sang kiến:Thông quá tập hợp đíchstream()Phương pháp hoặcparallelStream()Phương pháp lai sang kiến lưu.
    • Tòng sổ tổ sang kiến:Sử dụngArrays.stream(array)Phương pháp.
    • Sử dụng tĩnh thái công hán phương pháp:NhưStream.of(),IntStream.range()Đẳng.
  2. Trung gian thao tác:
    • filter(Predicate):Căn cư điều kiện quá lự lưu trung đích nguyên tố.
    • map(Function):Tương lưu trung đích mỗi cá nguyên tố ánh xạ vi lánh nhất cá nguyên tố.
    • sorted():Đối lưu tiến hành bài tự.
    • distinct():Khứ trừ lưu trung trọng phục đích nguyên tố.
    • limit(long):Hạn chế lưu trung nguyên tố đích sổ lượng.
  3. Chung đoan thao tác:
    • forEach(Consumer):Đối lưu trung đích mỗi cá nguyên tố chấp hành thao tác.
    • collect(Collectors):Tương lưu nguyên tố quy ước hòa hối tổng thành nhất cá trị, nhưList, Set, MapĐẳng.
    • reduce():Quy ước thao tác, khả dĩ tương lưu trung đích nguyên tố phản phục kết hợp khởi lai, đắc đáo nhất cá trị.
    • min()Hòamax():Trảo xuất lưu trung đích tối tiểu hòa tối đại trị.
    • count():Phản hồi lưu trung nguyên tố đích tổng sổ.
    • anyMatch(),allMatch(),noneMatch():Kiểm tra lưu trung thị phủ tồn tại mãn túc điều kiện đích nguyên tố.

Như hà sử dụng Java 8 đích Stream API lai thao tác tập hợp:

publicstaticvoidmain(String[]args){
List<String>strings=Arrays.asList("abc","","bc","efg","abcd","","jkl");

// đả ấn phi không tự phù xuyến đích sổ lượng: Sử dụng `filter` phương pháp quá lự xuất phi không tự phù xuyến, nhiên hậu sử dụng `count` phương pháp hoạch thủ sổ lượng
longcount=strings.stream()
.filter(string->!string.isEmpty())
.count();
System.out.println("Phi không tự phù xuyến sổ lượng:"+count);

// đả ấn phi không tự phù xuyến đích liệt biểu: Sử dụng `filter` phương pháp quá lự xuất phi không tự phù xuyến, nhiên hậu sử dụng `collect(Collectors.toList())` tương kết quả thu tập vi List
List<String>filtered=strings.stream()
.filter(string->!string.isEmpty())
.collect(Collectors.toList());
System.out.println("Phi không tự phù xuyến liệt biểu:"+filtered);

// sử dụng đậu hào liên tiếp phi không tự phù xuyến: Sử dụng `filter` phương pháp quá lự xuất phi không tự phù xuyến, nhiên hậu sử dụng `collect(Collectors.joining( "," ))` liên tiếp thành nhất cá tự phù xuyến
StringmergedString=strings.stream()
.filter(string->!string.isEmpty())
.collect(Collectors.joining(","));
System.out.println("Liên tiếp hậu đích tự phù xuyến:"+mergedString);

// hoạch thủ tối trường đích tự phù xuyến: Sử dụng `max` phương pháp trảo đáo tối trường đích tự phù xuyến, như quả trảo bất đáo tắc phản hồi không tự phù xuyến
StringlongestString=strings.stream()
.max((s1,s2)->s1.length()-s2.length())
.orElse("");
System.out.println("Tối trường đích tự phù xuyến:"+longestString);
}

Nhị, Int | Long | Double Stream

IntStream,LongStreamHòaDoubleStreamThị cơ bổn loại hình đích lưu, đề cung liễu đối chỉnh sổ, trường chỉnh sổ hòa song tinh độ phù điểm sổ đích cao hiệu xử lý.

IntStreamĐích nguyên tố loại hình viint:

  • Sang kiến phương thức:
    • range(int startInclusive, int endExclusive):Sang kiến nhất cá phạm vi tại[startInclusive, endExclusive)Nội đíchIntStream.
    • rangeClosed(int startInclusive, int endInclusive):Sang kiến nhất cá phạm vi tại[startInclusive, endInclusive]Nội đíchIntStream.
    • of(int... values):Tòng nhất tổ chỉnh sổ trị sang kiến nhất cáIntStream.
  • Thường dụng phương pháp:
    • sum():Đối lưu trung đích sở hữu chỉnh sổ cầu hòa.
    • average():Kế toán lưu trung sở hữu chỉnh sổ đích bình quân trị.
    • min()Hòamax():Trảo xuất lưu trung đích tối tiểu hòa tối đại trị.
    • forEach(IntConsumer action):Đối lưu trung đích mỗi cá chỉnh sổ chấp hành chỉ định thao tác.

LongStreamĐích nguyên tố loại hình vilong:

  • Sang kiến phương thức:
    • range(long startInclusive, long endExclusive):Sang kiến nhất cá phạm vi tại[startInclusive, endExclusive)Nội đíchLongStream.
    • rangeClosed(long startInclusive, long endInclusive):Sang kiến nhất cá phạm vi tại[startInclusive, endInclusive]Nội đíchLongStream.
    • of(long... values):Tòng nhất tổ trường chỉnh sổ trị sang kiến nhất cáLongStream.
  • Thường dụng phương pháp:
    • sum():Đối lưu trung đích sở hữu trường chỉnh sổ cầu hòa.
    • average():Kế toán lưu trung sở hữu trường chỉnh sổ đích bình quân trị.
    • min()Hòamax():Trảo xuất lưu trung đích tối tiểu hòa tối đại trị.
    • forEach(LongConsumer action):Đối lưu trung đích mỗi cá trường chỉnh sổ chấp hành chỉ định thao tác.

DoubleStreamĐích nguyên tố loại hình vidouble:

  • Sang kiến phương thức:
    • of(double... values):Tòng nhất tổ song tinh độ phù điểm sổ trị sang kiến nhất cáDoubleStream.
    • range(double startInclusive, double endInclusive):Sang kiến nhất cá tại chỉ định phạm vi nội đíchDoubleStream.
  • Thường dụng phương pháp:
    • sum():Đối lưu trung đích sở hữu song tinh độ phù điểm sổ cầu hòa.
    • average():Kế toán lưu trung sở hữu song tinh độ phù điểm sổ đích bình quân trị.
    • min()Hòamax():Trảo xuất lưu trung đích tối tiểu hòa tối đại trị.
    • forEach(DoubleConsumer action):Đối lưu trung đích mỗi cá song tinh độ phù điểm sổ chấp hành chỉ định thao tác.

Sử dụngIntStream,LongStreamHòaDoubleStreamCơ bổn đích thao tác:

publicstaticvoidmain(String[]args){
// IntStream
IntStream.range(1,5)
.forEach(System.out::print);
// thâu xuất: 1234
System.out.println();

intsum=IntStream.of(1,2,3,4,5)
.sum();
// kế toán tổng hòa: 15
System.out.println("Sum of integers:"+sum);

// LongStream
longmax=LongStream.rangeClosed(1,10)
.max()
.orElse(0);
// trảo xuất tối đại trị: 10
System.out.println("Max of long integers:"+max);

// DoubleStream
doubleaverage=DoubleStream.of(1.5,2.5,3.5,4.5)
.average()
.orElse(0.0);
// kế toán bình quân trị: 3.0
System.out.println("Average of doubles:"+average);
}

Tam, thu tập khí Collectors

Thu tập khí ( Collectors ) dụng vu tương lưu đích nguyên tố luy tích đáo tập hợp trung, hoặc giả tiến hành tụ hợp thao tác. Tại sử dụng lưu tiến hành sổ cư xử lý thời, thu tập khí thị phi thường hữu dụng đích công cụ, tha môn năng cú giản hóa đại mã tịnh đề cao hiệu suất.

Thường dụng đích thu tập khí cập kỳ dụng pháp:

  1. toList()

    • Tương lưu trung đích nguyên tố thu tập đáo nhất cá liệt biểu trung.
    List<String>list=stream.collect(Collectors.toList());
    
  2. toSet()

    • Tương lưu trung đích nguyên tố thu tập đáo nhất cá tập hợp ( tập hợp nguyên tố bất trọng phục ) trung.
    Set<String>set=stream.collect(Collectors.toSet());
    
  3. toMap()

    • Tương lưu trung đích nguyên tố căn cư chỉ định đích keyMapper hòa valueMapper chuyển hoán vi Map.
    Map<Integer,String>map=stream.collect(Collectors.toMap(String::length,Function.identity()));
    
  4. joining()

    • Liên tiếp lưu trung đích nguyên tố thành vi nhất cá tự phù xuyến.
    Stringresult=stream.collect(Collectors.joining(","));
    
  5. groupingBy()

    • Căn cư mỗ cá chúc tính đối lưu trung đích nguyên tố tiến hành phân tổ, sinh thành nhất cá Map, kiện vi chúc tính, trị vi đối ứng chúc tính đích nguyên tố liệt biểu.
    Map<Integer,List<String>>groupedByLength=stream.collect(Collectors.groupingBy(String::length));
    
  6. partitioningBy()

    • Căn cư nhất cá điều kiện tương lưu trung đích nguyên tố phân vi lưỡng tổ, sinh thành nhất cá Map, kiện vitrue/false,Trị vi mãn túc điều kiện đích nguyên tố liệt biểu.
    Map<Boolean,List<String>>partitioned=stream.collect(Collectors.partitioningBy(s->s.length()>3));
    
  7. summarizingInt() / summarizingDouble() / summarizingLong()

    • Thống kế lưu trung nguyên tố đích hối tổng tín tức, như tối đại trị, tối tiểu trị, bình quân trị, tổng hòa đẳng.
    IntSummaryStatisticsstats=stream.collect(Collectors.summarizingInt(String::length));
    
    

Như hà tương nhất cá tự phù xuyến lưu thu tập thành nhất cá liệt biểu, tịnh án trường độ phân tổ:

publicstaticvoidmain(String[]args){
List<String>words=Arrays.asList("apple","banana","grape","pear","orange");

// tương lưu trung đích nguyên tố thu tập đáo nhất cá liệt biểu trung
List<String>wordList=words.stream()
.collect(Collectors.toList());
System.out.println("List of words:"+wordList);

// căn cư tự phù xuyến trường độ phân tổ
Map<Integer,List<String>>groupedByLength=words.stream()
.collect(Collectors.groupingBy(String::length));
System.out.println("Words grouped by length:"+groupedByLength);
}

Trí giả đích mộng tái mỹ, dã bất như ngu nhân thật càn đích cước ấn

Bình luận245
Thiêm gia hồng bao

Thỉnh điền tả hồng bao chúc phúc ngữ hoặc tiêu đề

Hồng bao cá sổ tối tiểu vi 10 cá

Nguyên

Hồng bao kim ngạch tối đê 5 nguyên

Đương tiền dư ngạch3.43Nguyên Tiền vãng sung trị >
Nhu chi phó:10.00Nguyên
Thành tựu nhất ức kỹ thuật nhân!
Lĩnh thủ hậu nhĩ hội tự động thành vi bác chủ hòa hồng bao chủ đích phấn ti Quy tắc
hope_wisdom
Phát xuất đích hồng bao

Đả thưởng tác giả

Ức ~ toại nguyện

Nhĩ đích cổ lệ tương thị ngã sang tác đích tối đại động lực

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
Tảo mã chi phó:¥1
Hoạch thủ trung
Tảo mã chi phó

Nâm đích dư ngạch bất túc, thỉnh canh hoán tảo mã chi phó hoặcSung trị

Đả thưởng tác giả

Thật phóNguyên
Sử dụng dư ngạch chi phó
Điểm kích trọng tân hoạch thủ
Tảo mã chi phó
Tiền bao dư ngạch 0

Để khấu thuyết minh:

1. Dư ngạch thị tiền bao sung trị đích hư nghĩ hóa tệ, án chiếu 1:1 đích bỉ lệ tiến hành chi phó kim ngạch đích để khấu.
2. Dư ngạch vô pháp trực tiếp cấu mãi hạ tái, khả dĩ cấu mãi VIP, phó phí chuyên lan cập khóa trình.

Dư ngạch sung trị