Jdk1.8 ciri baharu Strim mempunyai tiga API sedemikian, anyMatch, allMatch, noneMatch dan fungsi masing-masing adalah seperti berikut:
anyMatch: jika mana-mana satu syarat memenuhi syarat, maka kembalikan benar;
noneMatch: jika tiada syarat penghakiman memenuhi syarat, maka kembalikan benar;
Penggunaannya sebenarnya sangat mudah:
List<String> list = Arrays.asList("a", "b", "c","d", ""); //任意一个字符串判断不为空则为true boolean anyMatch = list.stream().anyMatch( s->StringUtils.isEmpty(s)); //所有字符串判断都不为空则为true boolean allMatch = list.stream().allMatch( s->StringUtils.isEmpty(s)); //没有一个字符判断为空则为true boolean noneMatch = list.stream().noneMatch( s->StringUtils.isEmpty(s));
Dalam pembangunan sebenar harian, kita mungkin pernah melihat kod seperti ini dengan banyak syarat penghakiman:
if(StringUtils.isEmpty(str1) || StringUtils.isEmpty(str2) || StringUtils.isEmpty(str3) || StringUtils.isEmpty(str4) || StringUtils.isEmpty(str5) || StringUtils.isEmpty(str6) ){ ..... }
Pada masa ini, anda boleh mempertimbangkan untuk menggunakan strim untuk mengoptimumkan, dan kod yang dioptimumkan adalah seperti berikut :
if(Stream.of(str1, str2, str3, str4,str5,str6).anyMatch(s->StringUtils.isEmpty(s))){ ..... }
Selepas pengoptimuman seperti ini, adakah ia lebih elegan daripada keadaan yang ditimbun bersama dalam sekumpulan ifs?
Sudah tentu, ini hanya untuk atau syarat Jika anda menghadapi dan syarat, anda juga boleh menggunakan Strim untuk mengoptimumkan, contohnya:
if(StringUtils.isEmpty(str1) && StringUtils.isEmpty(str2) && StringUtils.isEmpty(str3) && StringUtils.isEmpty(str4) && StringUtils.isEmpty(str5) && StringUtils.isEmpty(str6) ){ ..... }
Selepas menggunakan Strim untuk mengoptimumkan:
if(Stream.of(str1, str2, str3, str4,str5,str6).allMatch(s->StringUtils.isEmpty(s))){ ..... }
Atas ialah kandungan terperinci Cara menggunakan Stream dalam Java untuk mengoptimumkan pertimbangan terlalu banyak syarat dalam if. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!