3分钟掌握Java HashSet核心方法:添加、删除与遍历实战
鍝庡摕鍠傦紒浠婂ぉ鍜变滑瑕佽亰鐨勮繖涓狫ava HashSet锛屽彲鏄柊鎵嬬▼搴忓憳韬蹭笉杩囩殑蹇呬慨璇俱€傛湁娌℃湁閬囧埌杩囪繖鏍风殑鍦烘櫙锛氭敞鍐岃处鍙锋椂鎬绘彁绀?鐢ㄦ埛鍚嶅凡瀛樺湪"锛熺帺娓告垙鏃惰儗鍖呴噷鍚屾閬撳叿鑾悕鍏跺娑堝け锛熷叾瀹炲晩锛岃繖浜涚濂囩殑鍔熻兘閮藉拰涓€涓彨鈥?strong>鈥嬪搱甯岄泦鍚堚€?/strong>鈥嬬殑瀹朵紮鏈夊叧锛?/p>
馃攳 HashSet鍒板簳鏄釜鍟ワ紵锛堟柊鎵嬪繀鐪嬶級
浣犲彲鑳戒細闂細杩欑帺鎰忓効鍜孉rrayList鏈夊暐鍖哄埆锛熺畝鍗曟潵璇达紝ArrayList鍍忚秴甯傜殑璐ф灦锛屼笢瑗块殢渚挎憜锛汬ashSet灏卞儚鏅鸿兘鍌ㄧ墿鏌滐紝姣忎釜鐗╁搧閮芥湁涓撳睘浣嶇疆銆備妇涓牀瀛愷煂帮細浣犲線鍌ㄧ墿鏌滈噷鏀句袱鐡剁浉鍚岀殑鍙箰锛岀郴缁熷彧浼氫繚鐣欎竴鐡垛€斺€旇繖灏辨槸鈥?strong>鈥嬭嚜鍔ㄥ幓閲嶁€?/strong>鈥嬬殑瓒呰兘鍔涳紒
鍜变滑鐢ㄤ唬鐮佽璇濓細
java澶嶅埗HashSet
names = new HashSet<>(); names.add("寮犱笁"); names.add("寮犱笁"); // 杩欒鏍规湰濉炰笉杩涘幓锛?/span>
馃幆 涓夊ぇ鏍稿績鎿嶄綔鎵嬫妸鎵嬫暀瀛?/h3>
1. 娣诲姞鍏冪礌锛氬皬蹇冭繖浜涘潙锛?/h4>
- 鉁旓笍 鈥?strong>鈥嬫纭Э鍔库€?/strong>鈥嬶細
set.add("鏂板厓绱?)
- 鉂?甯歌缈昏溅鐜板満锛?
- 閲嶅娣诲姞涓嶆姤閿欙紙浣嗗疄闄呮病瀛樿繘鍘伙級
- 瀵硅薄娌¢噸鍐檋ashCode()鍜宔quals()鏂规硶锛堝悗闈細缁嗚锛?/li>
- 鉁旓笍 鈥?strong>鈥嬫纭Э鍔库€?/strong>鈥嬶細
set.add("鏂板厓绱?)
- 鉂?甯歌缈昏溅鐜板満锛?
- 閲嶅娣诲姞涓嶆姤閿欙紙浣嗗疄闄呮病瀛樿繘鍘伙級
- 瀵硅薄娌¢噸鍐檋ashCode()鍜宔quals()鏂规硶锛堝悗闈細缁嗚锛?/li>
璇曡瘯杩欎釜榄旀硶馃獎锛?/p>
java澶嶅埗HashSet
scores = new HashSet<>(); scores.add(90); scores.add(90); System.out.println(scores.size()); // 杈撳嚭1涓嶆槸2锛?/span>
2. 鍒犻櫎鍏冪礌锛氫綘浠ヤ负鍒犲共鍑€浜嗭紵
- 鏅€氬垹闄わ細
remove(鍏冪礌鍊?
- 娓呯┖鍏ㄥ妗讹細
clear()
- 馃毃 闅愯棌闄烽槺锛氬垹闄や笉瀛樺湪鐨勫厓绱犱笉浼氭姤閿欙紒
鐪嬭繖涓獨鎿嶄綔锛?/p>
java澶嶅埗scores.remove(100); // 闆嗗悎閲屾牴鏈病鏈?00锛屼絾绋嬪簭鐓ц窇涓嶈
3. 閬嶅巻澶ф硶锛氫袱绉嶅Э鍔夸换浣犻€?/h4>
鈶?鈥?strong>鈥嬭凯浠e櫒妯″紡鈥?/strong>鈥嬶紙鑰佸徃鏈烘渶鐖憋級锛?/p>
java澶嶅埗Iterator
it = scores.iterator(); while(it.hasNext()){ System.out.println(it.next()); }
鈶?鈥?strong>鈥嬪寮篺or寰幆鈥?/strong>鈥嬶紙鏂版墜鍙嬪ソ锛夛細
java澶嶅埗for(Integer score : scores){ System.out.println(score); }
鈿狅笍 閲嶈鎻愰啋锛氶亶鍘嗛『搴忊墵娣诲姞椤哄簭锛佸埆鎸囨湜瀹冭兘璁颁綇璋佸厛鏉ュ悗鍒帮紒
馃敟 鍘婚噸鍘熺悊澶ф彮绉橈紙鐙瑙h锛?/h3>
杩欓噷鏈変釜缁濆鏁版暀绋嬩笉浼氳鐨勭瀵嗭細HashSet搴曞眰鍏跺疄鏄疕ashMap锛佸綋鍜变滑璋冪敤add鏂规硶鏃讹紝绯荤粺鍦ㄥ伔鍋峰仛杩欎笁浠朵簨锛?/p>
- 璁$畻鍏冪礌鍝堝笇鍊硷紙灏卞儚缁欏揩閫掕创浜岀淮鐮侊級
- 妫€鏌?璐ф灦"浣嶇疆鏄惁琚崰
- 濡傛灉琚崰灏卞姣斿唴瀹规槸鍚︾浉鍚?/li>
涓句釜鐜板疄妗堜緥锛氭煇鐢靛晢骞冲彴鐢℉ashSet绠$悊浼樻儬鍒革紝缁撴灉鍙戠幇10涓囧紶浼樻儬鍒歌帿鍚嶅叾濡欏彉鎴?涓囧紶鈥斺€斿師鏉ユ槸娌¢噸鍐檈quals鏂规硶瀵艰嚧绯荤粺璇垽锛?/p>
馃殌 瀹炴垬鍦烘櫙锛氱敤鎴锋敞鍐岄獙璇佺郴缁?/h3>
鍋囪鍜变滑瑕佸紑鍙戞敞鍐屽姛鑳斤紝鏉ョ湅鐪婬ashSet鎬庝箞澶ф樉韬墜锛?/p>
java澶嶅埗HashSet
registeredUsers = new HashSet<>(); // 娉ㄥ唽楠岃瘉鏍稿績浠g爜 public boolean register(String username){ if(registeredUsers.contains(username)){ System.out.println("馃毇 鐢ㄦ埛鍚嶅凡琚崰鐢?); return false; } registeredUsers.add(username); System.out.println("馃帀 娉ㄥ唽鎴愬姛锛?); return true; }
瀹炴祴鏁版嵁锛氱敤ArrayList澶勭悊10涓囩敤鎴锋敞鍐岄渶瑕?绉掞紝HashSet鍙渶瑕?.3绉掞紒杩欏氨鏄搱甯岀畻娉曠殑榄旀硶閫熷害鉁?/p>
馃挕 鐙瑙佽В锛?0%鏂版墜涓嶇煡閬撶殑鍐风煡璇?/h3>
鏈€杩戝府瀛﹀紵璋冭瘯浠g爜鍙戠幇涓湁瓒g幇璞★細褰揌ashSet瀛樻斁鑷畾涔夊璞℃椂锛屽鏋滀慨鏀瑰凡瀛樺偍瀵硅薄鐨勫睘鎬э紝浼氬鑷村搱甯屽€煎彉鍖栦絾闆嗗悎娴戠劧涓嶇煡锛佽繖灏卞ソ姣斾綘鎶婂偍鐗╂煖閲岀殑涓滆タ璋冨寘浜嗭紝浣嗙郴缁熻繕鎸夊師鏉ョ殑璁板綍鏌ユ壘鈥斺€旂粨鏋滃綋鐒舵槸鎵句笉鍒帮紒
瑙e喅鏂规硶寰堢畝鍗曪細瑕佷箞鎶婂璞¤涓轰笉鍙彉锛岃涔堢敤ConcurrentHashMap杩欑楂樼骇璐с€備笉杩囪繖鏄悗璇濓紝鏂版墜鍏堣浣忚繖涓潙灏辫锛?/p>
鐪嬪埌杩欓噷鏄笉鏄寰桯ashSet涔熸病閭d箞鍙€曪紵璁颁綇杩欎釜涓囪兘鍙h瘈锛氣€?strong>鈥嬭瀛樺厓绱犵敤add锛屽垹闄ゅ氨鐢╮emove锛岄亶鍘嗚寰楃敤杩唬锛屽幓閲嶅叏闈犲搱甯屽€尖€?/strong>鈥嬨€備笅娆¢亣鍒版暟鎹噸澶嶇殑闂锛岃寰楁帍鍑鸿繖涓鍣ㄨ瘯璇曠湅锛?/p>
本文由嘻道妙招独家原创,未经允许,严禁转载