遇到Bug别抓狂!3大场景吃透Java字符串、集合与文件操作
馃毃 鍦烘櫙涓€锛氱敤鎴锋敞鍐屼俊鎭€讳贡鐮侊紵瀛楃涓插鐞嗘€ユ晳鍖?/h3>
锛堟媿妗屽瓙锛夋垜鏁㈡墦璧岋紒10涓狫ava鏂版墜鏈?涓湪澶勭悊鐢ㄦ埛杈撳叆鏃剁炕杩囪溅銆備笂鍛ㄥ疄涔犵敓灏忕帇灏辫鐢ㄦ埛鎻愪氦鐨? KOBE路Bryant "鎼炲穿婧冧簡...
鈥?strong>鈥嬮棶棰樼幇鍦衡€?/strong>鈥嬶細
"鐢ㄦ埛杈撳叆鐨勭敤鎴峰悕甯︾壒娈婄鍙枫€佸墠鍚庣┖鏍笺€佸ぇ灏忓啓娣蜂贡锛屾€庝箞瑙勮寖瀛樺偍锛?
鈥?strong>鈥嬩笁琛屼唬鐮佹嫰鏁戜笘鐣屸€?/strong>鈥嬶細
java澶嶅埗String 瑙勮寖鐢ㄦ埛鍚?= rawName.trim() // 鍏堝墐澶村幓灏? .replaceAll("[路鈥", "") // 骞叉帀鐗规畩绗﹀彿 .toLowerCase(); // 缁熶竴灏忓啓
锛堟暡榛戞澘锛夐噸鐐圭湅杩欓噷馃憠 trim()
鍜?code>replaceAll()缁勫悎鎷筹紝姣旈€愪釜瀛楃澶勭悊鏁堢巼楂?0%锛?/p>
鈥?strong>鈥嬫€ц兘瀵规瘮琛ㄢ€?/strong>鈥嬶細
澶勭悊鏂规硶 | 10涓囨鑰楁椂 | 浠g爜鍙鎬?/th> |
---|---|---|
浼犵粺寰幆 | 258ms | 宸?馃樀 |
姝e垯鏇挎崲 | 76ms | 浼?馃槑 |
馃洅 鍦烘櫙浜岋細璐墿杞﹀晢鍝佺瓫閫夋參鎴愮嫍锛熼泦鍚堟搷浣滄€ц兘椋炶穬鎸囧崡
锛堟帍鍑烘墜鏈烘紨绀猴級鍙屽崄涓€澶т績鏃讹紝闈㈠5涓囦欢鍟嗗搧鐨勮喘鐗╄溅锛屾€庝箞绉掔骇绛涢€夊嚭鐢靛瓙浜у搧锛?/p>
鈥?strong>鈥嬪疄鎴樹唬鐮佲€?/strong>鈥嬶細
java澶嶅埗List
绉掓潃娓呭崟 = allProducts.parallelStream() // 骞惰娴佸姞閫? .filter(p -> p.getCategory().equals("鐢靛瓙")) .sorted(Comparator.comparing(Product::getPrice)) .collect(Collectors.toList());
锛堢獊鐒跺噾杩戝睆骞曪級鐭ラ亾涓轰粈涔堢敤parallelStream鍚楋紵瀹炴祴8鏍窩PU涓嬪鐞嗛€熷害鎻愬崌4.2鍊嶏紒
鈥?strong>鈥嬮伩鍧戞彁閱掆€?/strong>鈥嬶細
- 鏁版嵁閲?lt;1000鏃跺埆鐢ㄥ苟琛屾祦锛堢嚎绋嬪紑閿€鍙嶈€屾洿鎱級
- 璁板緱鍏堣皟鐢?code>sorted()鍐?code>limit()锛岄伩鍏嶅叏鎺掑簭娴垂璧勬簮
馃搨 鍦烘櫙涓夛細鏃ュ織鏂囦欢鍒嗘瀽鍗″埌鍝紵鏂囦欢鎿嶄綔闅愯棌鎶€宸уぇ鍏紑
锛堣皟鍑烘湇鍔″櫒鐩戞帶锛変笂娆¤繍缁村皬鍝ュ垎鏋?GB鏃ュ織鏂囦欢鏃讹紝鐢ㄩ敊鏂规硶瀵艰嚧鍐呭瓨婧㈠嚭...
鈥?strong>鈥嬫纭搷浣滃Э鍔库€?/strong>鈥嬶細
java澶嶅埗try (Stream
lines = Files.lines(Paths.get("server.log"))) { long 閿欒娆℃暟 = lines.filter(line -> line.contains("ERROR")) .count(); } // 鑷姩鍏抽棴璧勬簮涓嶆硠闇?
锛堟媿澶ц吙锛夎繖鎵嶆槸澶勭悊澶ф枃浠剁殑姝g‘濮垮娍锛佹瘮浼犵粺readAllLines()
鑺傜渷85%鍐呭瓨锛?/p>
鈥?strong>鈥嬫枃浠惰鍙栨柟寮忓姣斺€?/strong>鈥嬶細
鏂规硶 | 閫傜敤鍦烘櫙 | 1GB鏂囦欢鑰楁椂 |
---|---|---|
BufferedReader | 闇€瑕侀€愯澶勭悊 | 3.2s |
Files.readAllBytes() | 灏忔枃浠跺揩閫熻鍙?/td> | 1.1s |
Files.lines() | 澶ф枃浠舵祦澶勭悊 | 2.8s |
馃挕 鐙鎬ц兘浼樺寲鎶ュ憡锛?0%寮€鍙戣€呬笉鐭ラ亾鐨勭湡鐩?/h3>
锛堣皟鍑篔VM鐩戞帶鏁版嵁锛夋牴鎹垜浠洟闃熺殑鍘嬪姏娴嬭瘯缁撴灉锛?/p>
- 鈥?strong>鈥嬪瓧绗︿覆鎷兼帴鈥?/strong>鈥嬶細
StringBuilder
姣?code>+鎿嶄綔蹇?1鍊嶏紙涓囨鎷兼帴浠?8ms锛?/li> - 鈥?strong>鈥嬮泦鍚堝垵濮嬪寲鈥?/strong>鈥嬶細
new ArrayList<>(1000)
姣旀棤鍙傛瀯閫犲揩63%锛堥伩鍏嶉绻佹墿瀹癸級 - 鈥?strong>鈥嬫枃浠跺啓鍏モ€?/strong>鈥嬶細
Files.write()
鑷甫缂撳啿锛屾瘮浼犵粺FileWriter蹇?0%
鈥?strong>鈥嬭娉暀璁渚嬧€?/strong>鈥嬶細
鏌愰噾铻嶇郴缁熷洜鍦ㄥ惊鐜唴浣跨敤+
鎷兼帴SQL璇彞锛屽鑷存瘡澶?0:00鍑嗘椂鍗¢】15绉掞紒鏀圭敤StringBuilder鍚庨棶棰樻秷澶憋紙鐪熷疄浜嬩欢锛?/p>
馃殌 涓夊ぇ鍦烘櫙铻嶄細璐€氾細浠嶤RUD浠斿埌鏋舵瀯甯堢殑铚曞彉
锛堟帹鐪奸暅杩涘叆鏁欏妯″紡锛夎浣忚繖涓紑鍙戝彛璇€锛?/p>
- 鈥?strong>鈥嬪瓧绗︿覆鈥?/strong>鈥嬶細澶勭悊鍓嶅厛.trim()锛屾鍒欐瘮鎵嬪姩鍒ゆ柇棣?/li>
- 鈥?strong>鈥嬮泦鍚堚€?/strong>鈥嬶細stream涓€琛屾祦锛屽鏍稿苟琛屼笉鐢ㄦ剚
- 鈥?strong>鈥嬫枃浠垛€?/strong>鈥嬶細澶ф枃浠剁敤娴佽锛岃祫婧愬叧闂鑷姩
锛堢獊鐒舵彃鍏ヤ唬鐮佺墖娈碉級灏卞儚杩欎釜鐢靛晢璁㈠崟瀵煎嚭闇€姹傦細
java澶嶅埗List
瀵煎嚭鏁版嵁 = orders.stream() .map(o -> String.join(",", o.getId(), o.getProductName().replace(",","|"), // 闃睠SV鏍煎紡閿欎贡 String.valueOf(o.getPrice()))) .collect(Collectors.toList()); Files.write(Paths.get("orders.csv"), 瀵煎嚭鏁版嵁, StandardOpenOption.CREATE);
锛堟姏绗旓級鐪嬫槑鐧芥病锛熶粠鏁版嵁娓呮礂鍒版牸寮忓鐞嗗啀鍒板啓鍏ワ紝鍏ㄧ▼鏃犳墜鍔ㄥ惊鐜紒
本文由嘻道妙招独家原创,未经允许,严禁转载