Saya sering melihat bilah pos yang memblokir konten posting berbagai pengguna, dan saya berpikir tentang cara mengimplementasikan ini. Saya berpikir untuk menggunakan string untuk mengganti untuk mengimplementasikannya, tetapi efisiensi ini sangat rendah dan tidak dapat menjamin kecocokan terpanjang. Ini adalah ide awal saya saat itu. Dalam sebuah proyek yang baru -baru ini saya kerjakan, saya perlu memblokir beberapa konten, dan saya menganalisis masalah ini lagi, dan akhirnya membentuk kode berikut.
/ ***@Deskripsi: Implementasi fungsi kata bertopeng*/ paket cn.yicha.novel.search.util; impor java.io.bufferedReader; impor java.io.file; impor java.io.fileInputStream; impor java.io.filenotfoundException; impor java.io.ioException; impor java.io.inputStreamReader; impor java.util.hashset; impor cn.yicha.novel.search.config.config; kelas publik terlarang {private static forbidden forbidden = new forbidden (); // mask word hashset private hashset <string> keystring = hashset baru <string> (); private final static int maxlength = character.max_value; // topeng panjang kata hashset array @suppresswarnings ("uncecked") private hashset <Integer> [] keylength = hashset baru [maxlength]; private forbidden () {loadForbidden (config.getClassroot () + "forbidden.txt"); } public static forbidden getForbidden () {return forbidden; } / ** * @param str * @return * @description: String input ditutupi untuk mencapai pencocokan panjang maksimum * / string publik baca (string str) {if (str == null) {return null; } StringBuffer StringBuffer = StringBuffer baru (); int start = 0; untuk (int i = 0; i <str.length ();) {int at = str.charat (i); if (keylength [at] == null) {i ++; melanjutkan; } else {int ml = 0; untuk (objek obj: keylength [at] .toArray ()) {int len = ((integer) obj) .IntValue (); if (i + len <= str.length ()) {string s = str.substring (i, i + len); if (keyString.contains (s)) {// pencocokan panjang maksimum ml = len> ml? Len: ML; }}} if (ml> 0) {stringBuffer.append (str.substring (start, i)). append ("***"); i += ml; mulai = i; } else {i ++; }}}} if (start <str.length ()) {stringBuffer.append (str.substring (start)); } return stringBuffer.toString (); } /** * @param path * @description: Inisialisasi kata -kata masking pemuatan * @description: Logika format data untuk menyimpan kata -kata masking adalah sebagai berikut * @Description: Bangun hashset <string> untuk menyimpan semua kata -kata masking * @description: hashset <Integer> array dengan panjang maxlength = character = character @description: hashset <Integer> array dengan panjang maxlength = character = character @Description: hashset <Integer> array dengan panjang maxlength = character = character = @Description: hashset <Integer> array dengan panjang maxlengt. menjadi nilai int, yaitu, posisi di mana informasi yang relevan disimpan dalam array, * @description: jika "halo" mendapatkan nilai int dari 'Anda' adalah tahun 20320, yaitu, informasi yang relevan dari "halo" disimpan dalam posisi yang disimpan di dalam array yang di dalamnya. Posisi*/ public void loadForbIdden (string path) {file forbidDenFile = file baru (path); FileInputStream FileInputStream; coba {fileInputStream = FileInputStream baru (ForBidDenFile); InputStreamReader inputStreamReader = new InputStreamReader (FileInputStream, "UTF-8"); BufferedReader bufferedReader = BufferedReader baru (InputStreamReader); String s; while ((s = bufferedreader.readline ())! = null) {s = s.trim (); if (s.length ()> 0) {keyString.add (s); int i = s.charat (0); if (keylength [i] == null) {// mask panjang kata hashset hashset <integer> a = hashset baru <integer> (); a.add (s.length ()); keylength [i] = a; } else {keylength [i] .add (s.length ()); }}} fileInputStream.close (); bufferedreader.close (); fileInputStream.close (); } catch (FileNotFoundException e) {e.printstacktrace (); } catch (ioException e) {e.printstacktrace (); }} public static void main (string [] args) {// system.out.println (forbidden.getforbidden (). baca ("AV Actress Nihao")); int i = 'kamu'; System.out.println (i); }}Di atas adalah kode kunci untuk Java untuk mengimplementasikan fungsi kata pemblokiran. Saya berharap ini akan membantu untuk pembelajaran semua orang.