Soalan ini meneroka cara memanfaatkan keupayaan ekspresi biasa Java dengan berkesan untuk menapis unsur -unsur dalam senarai. Pendekatan teras melibatkan melangkah melalui senarai dan menggunakan corak ekspresi biasa untuk setiap elemen menggunakan kelas java.util.regex.Pattern
dan java.util.regex.Matcher
. Kita boleh mencapai ini dengan cekap menggunakan aliran untuk kebolehbacaan dan prestasi yang dipertingkatkan dalam Java moden. Kod berikut menunjukkan ini menggunakan aliran dan ungkapan biasa:
Kod ini terlebih dahulu menyusun corak ekspresi biasa, yang merupakan langkah pengoptimuman penting kerana ia mengelakkan rekompilasi untuk setiap elemen. Kemudian, ia menggunakan aliran untuk berulang melalui senarai. Operasi
List<String> strings = Arrays.asList("apple pie", "banana bread", "cherry cake", "apple crumble", "orange juice");
, yang kembali
jika coraknya terdapat dalam rentetan. Akhirnya,Pattern pattern = Pattern.compile("apple"); // Compile the regex pattern once for efficiency List<String> filteredList = strings.stream() .filter(s -> pattern.matcher(s).find()) .collect(Collectors.toList()); System.out.println(filteredList); // Output: [apple pie, apple crumble]
filter
) dengan bijak untuk mengoptimumkan prestasi enjin regex. Ini dapat mengurangkan jumlah rentetan yang perlu diproses oleh enjin regex yang lebih mahal. Sebagai contoh, jika anda mengetahui rentetan sasaran anda bermula dengan watak tertentu, tambahkan pemeriksaan awal untuk watak itu sebelum menggunakan regex. Amalan terbaik untuk pengendalian pengecualian termasuk: PatternSyntaxException
(dilemparkan jika regex tidak sah). Pengesahan ini mungkin termasuk cek untuk nilai null atau rentetan kosong. Daripada generik try-catch
PatternSyntaxException
Skalabiliti: try-catch
sifat linear meleleh melalui senarai boleh menjadi hambatan untuk dataset yang sangat besar. Ekspresi yang lebih mudah dan sasaran adalah penting. Aliran selari Java membahagikan kerja di pelbagai benang, membolehkan pemprosesan unsur -unsur senarai serentak..parallel()
sebelum .filter()
operasi: List<String> strings = Arrays.asList("apple pie", "banana bread", "cherry cake", "apple crumble", "orange juice");
Atas ialah kandungan terperinci Menapis senarai dengan ungkapan biasa di Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!