1. สถิติจำนวนตัวอักษรสตริง (และรักษาลำดับตัวอักษร)
ตัวอย่างเช่น: aabbbbbbba oh bcab cdabc deaaa
มี 5 วิธีที่ฉันรู้ หากคุณมีคนที่ดีกว่าโปรดให้คำแนะนำกับฉัน
// วิธีการที่ 1 โมฆะสาธารณะคงที่ retterCount1 (สตริง s) {s = s.replaceall (" +", ""); // 1, แปลงเป็นอาร์เรย์อักขระ car c [] = s.toChararray (); แผนที่ <อักขระ, จำนวนเต็ม> tree = treemap ใหม่ <ตัวละคร, จำนวนเต็ม> (); สำหรับ (int i = 0; i <c.length; i ++) {// ก่อน: a, 1 // ครั้งที่สอง: a, 2 // 2, รับค่าที่สอดคล้องกับค่าจำนวนเต็มคีย์ = tree.get (c [i]); // decompile: ค่าจำนวนเต็ม = (จำนวนเต็ม) // 3, จัดเก็บทรีตัดสิน (c [i], value == null? 1: ค่า+1); } // หากต้องการรูปแบบผลลัพธ์: A (5) B (4) C (3) D (2) E (1) StringBuilder SBU = New StringBuilder (); สำหรับ (คีย์อักขระ: tree.keyset ()) {จำนวนเต็มนับ = tree.get (คีย์); sbu.append (คีย์) .append ("("). ผนวก (นับ) .append (")"); } // แปลง SBU เป็น String System.out.println (sbu.toString ());} // วิธีการที่ 2 ใช้สตรีม // สิ่งนี้จะไม่ถูกต้องเมื่อทดสอบอักขระพิเศษเช่น // n และคำสั่งซื้อจะไม่ถูกต้อง สิ่งนี้เกิดจาก MAP // โซลูชันใช้ treemap สาธารณะเป็นโมฆะคงที่ retterCount2 (สตริง s) {s = s.replaceall (" +", ""); treeemap <string, long> result = arrays.stream (s.split ("")) .sorted () // .collect (collectors.groupingby (function.identity (), collector.counting ()); .Collect (collectors.groupingby (function.identity (), treemap :: ใหม่, collector.counting ())); System.out.println (ผลลัพธ์); } // เมธอด 3 ใช้คอลเลกชันความถี่ // ในความเป็นจริงมันคือการเปลี่ยนสตริงเป็นคอลเลกชันเพื่อบันทึกแต่ละสตริงและเปรียบเทียบแต่ละสตริงกับการรวบรวมโมฆะสาธารณะแบบคงที่ตัวอักษรคงที่ letterCount3 (สตริง s) {s = s.replaceall (" +", ""); รายการ <string> list = array.aslist (s.split ("")); แผนที่ <สตริง, จำนวนเต็ม> map = new treemap <string, integer> (); สำหรับ (String str: list) {map.put (str, collections.frequency (รายการ, str));} system.out.println (แผนที่); } // วิธีการ 4 โมฆะสาธารณะคงที่ letterCount4 (สตริง s) {s = s.replaceall (" +", ""); สตริง [] strs = s.split (""); แผนที่ <สตริง, จำนวนเต็ม> map = new treemap <string, integer> (); สำหรับ (String str: strs) {map.put (str, stringcount (s, str));} system.out.println (แผนที่); } // วิธีการที่ 5 โมฆะสาธารณะคงที่ letterCount5 (สตริง s) {s = s.replaceall (" +", ""); สตริง [] strs = s.split (""); แผนที่ <สตริง, จำนวนเต็ม> map = new treemap <string, integer> (); สำหรับ (String str: strs) {map.put (str, stringcount2 (s, str));} system.out.println (แผนที่); } // ใช้ StringCount แบบคงที่สาธารณะ (สตริง maxstr, สตริง substr) {// note // 1 ตัวอย่างเช่นหากไม่พบ qqqq แล้วสตริงจะถูกส่งคืนโดยตรง // 2 ตัวอย่างเช่น qqqjava ไม่มีตัวอักษรที่ไม่มีการเริ่มต้น เติมโดยอัตโนมัติ // 4. สำหรับอักขระพิเศษโปรดให้ความสนใจกับการใช้ตัวละคร Escape int count = (maxstr + "") .split (substr) .length - 1; // system.out.println ("/" " + minstr +"/"" + " StringCount2 (สตริง maxstr, สตริงย่อย) {int count = 0; matcher m = pattern.compile (substr) .matcher (maxstr); ในขณะที่ (m.find ()) {count ++;} count return;}2. สถิติจำนวนคำในสตริง (ภาษาอังกฤษเท่านั้น)
จริง ๆ
Public Static Void WordStringCount (String S) {// จุดเริ่มต้นคือสตริงและหลังจากแยกมันจะกลายเป็นสตรีมสตริง แผนที่ <string, long> result = arrays.stream (s.split ("// s+")) .map (word-> word.replaceall ("[^a-za-z]", "")) .collect (collector.groupingby System.out.println (ผลลัพธ์); -3. สถิติจำนวนคำข้อความ (ภาษาอังกฤษเท่านั้น)
// ค้นหาจำนวนคำในข้อความโมฆะสาธารณะคงที่ WordFileCount (เส้นทางสตริง) พ่น IOException {// สตริงสตรีมเป็นครั้งแรกที่จุดเริ่มต้น // แยกก่อน // ลงในสตรีมอักขระ // แผนที่ตัวกรอง <String, long> files.lines (paths.get (path) stream.flatmap (str-> arrays.stream (str.split (" +"))) .map (คำ-> word.replaceall ("[^a-za-z]", "")) // ลบ filter (collections); System.out.println (ผลลัพธ์); -4. อื่น ๆ ที่ไม่เกี่ยวข้อง
เรารู้ว่ารายการพารามิเตอร์ตัวแปรสามารถส่งผ่านได้โดยไม่ต้องผ่านพารามิเตอร์
สำหรับ
Public Void TestName () {System.out.println ("A"); } Public Void TestName (String ... S) {// ไม่มีพารามิเตอร์ถูกส่งผ่าน S จะเริ่มต้นวัตถุโดยเริ่มต้น System.out.println ("B"); -ฉันควรพิมพ์อะไรเมื่อโทร TestName ()? มันจะพิมพ์ A และจะจับคู่วิธีโดยอัตโนมัติที่พารามิเตอร์ว่างเปล่าจริงๆ
บทสรุปข้างต้นของวิธีการหลายวิธีสำหรับ Java8 เพื่อนับจำนวนตัวอักษรสตริง (แนะนำ) คือเนื้อหาทั้งหมดที่ใช้ร่วมกันโดยตัวแก้ไข ฉันหวังว่ามันจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น