当前位置: 首页 > 后端技术 > Java

Java宝库常识点&面试题总结(上),2022最新版!

时间:2023-04-01 23:36:51 Java

澶у濂斤紝鎴戞槸鍚戝銆傜鎷涘湪鍗筹紙宸茬粡寮€濮嬫彁鍓嶅鎵癸級锛屾垜瀵笿avaGuide鐨勫唴瀹硅繘琛屼簡閲嶆瀯鍜屽畬鍠勶紝鍏紬鍙峰悓姝ユ渶鏂版洿鏂帮紝甯屾湜瀵逛綘鏈夋墍甯姪銆傛偍涔熷彲浠ュ湪缃戠珯锛坖avaguide.cn锛変笂鍦ㄧ嚎闃呰锛岄槄璇讳綋楠屼細鏇村ソ锛佸墠3绡囷細Java鍩虹甯歌瘑鐐?闈㈣瘯棰樻€荤粨锛堜笂锛夛紝2022鏈€鏂扮増锛丣ava鍩虹甯歌瘑鐐?闈㈣瘯棰樻眹鎬伙紙涓級2022鏈€鏂扮増Java鍩虹甯歌瘑鐐?闈㈣瘯棰樻眹鎬伙紙涓嬶級2022鏈€鏂扮増锛丆ollection姒傝堪JavaCollection姒傝堪Java闆嗗悎鍙堢О涓哄鍣紝涓昏娲剧敓浜庝袱涓帴鍙o細涓€涓槸Collection鎺ュ彛锛屼富瑕佺敤浜庡瓨鍌ㄥ崟涓厓绱狅紱鍙︿竴涓槸Map鎺ュ彛锛屼富瑕佺敤鏉ュ瓨鍌ㄩ敭鍊煎銆傚浜嶤ollection鎺ュ彛锛屼富瑕佹湁涓嬮潰涓変釜瀛愭帴鍙o細List銆丼et銆丵ueue銆侸ava闆嗗悎妗嗘灦濡備笅鍥炬墍绀猴細娉細鍥句腑鍙垪鍑轰簡涓昏鐨勭户鎵挎淳鐢熷叧绯伙紝骞舵湭鍒楀嚭鎵€鏈夊叧绯汇€備緥濡傜渷鐣ヤ簡AbstractList銆丯avigableSet绛夋娊璞$被绛夎緟鍔╃被銆傚鏋滄兂娣卞叆浜嗚В锛屽彲浠ヨ嚜宸辨煡鐪嬫簮鐮併€傝鍛婅瘔鎴慙ist銆丼et銆丵ueue鍜孧ap涔嬮棿鐨勫尯鍒紵List锛堝鐞嗛『搴忕殑濂藉府鎵嬶級锛氬瓨鍌ㄧ殑鍏冪礌鏄湁搴忕殑锛屽彲閲嶅鐨勩€係et锛堝叧娉ㄥ敮涓€灞炴€э級锛氬瓨鍌ㄧ殑鍏冪礌鏄棤搴忕殑锛屼笉鍙噸澶嶇殑銆俀ueue锛堝疄鐜版帓闃熷姛鑳界殑鍙彿鏈猴級锛氭寜鐓х壒瀹氱殑鎺掗槦瑙勫垯纭畾椤哄簭锛屽瓨鍌ㄧ殑鍏冪礌鏄湁搴忕殑锛屽彲閲嶅鐨勩€侻ap锛堜娇鐢╧ey鏉ユ悳绱㈢殑楂樻墜锛夛細浣跨敤閿€煎锛坘ey-value锛夊瓨鍌紝绫讳技浜庢暟瀛﹀嚱鏁皔=f(x)锛屸€渪鈥濅唬琛╧ey锛屸€測鈥濅唬琛╲alue锛宬ey鏃犲簭锛屼笉鍙噸澶嶏紝鍊兼棤搴忥紝鍙噸澶嶏紝姣忎釜閿渶澶氭槧灏勫埌涓€涓€笺€傞泦鍚堟鏋跺簳灞傛暟鎹粨鏋勬€荤粨棣栧厛鎴戜滑鏉ョ湅涓€涓婥ollection鎺ュ彛涓嬬殑闆嗗悎銆侺istArraylist:Object[]arrayVector:Object[]arrayLinkedList:鍙屽悜閾捐〃(JDK1.6涔嬪墠鏄惊鐜摼琛紝JDK1.7鍙栨秷浜嗗惊鐜?SetHashSet(unordered,unique):鍩轰簬HashMap瀹炵幇锛屽簳灞備娇鐢℉ashMap淇濆瓨ElementLinkedHashSet锛歀inkedHashSet鏄疕ashSet鐨勫瓙绫伙紝鍏跺唴閮ㄧ敱LinkedHashMap瀹炵幇銆傛湁鐐圭被浼间簬鎴戜滑涔嬪墠璇寸殑LinkedHashMap銆傚畠鐨勫唴閮ㄥ疄鐜版槸鍩轰簬HashMap鐨勶紝浣嗘槸杩樻槸鏈変竴鐐瑰尯鍒殑銆俆reeSet(ordered,unique):绾㈤粦鏍?鑷钩琛℃帓搴忎簩鍙夋爲)QueuePriorityQueue:Object[]鏁扮粍瀹炵幇涓や釜Fork鍫咥rrayQueue:Object[]鏁扮粍+鍙屾寚閽堟垜浠湅涓€涓婱ap鎺ュ彛涓嬬殑闆嗗悎.MapHashMap锛氬湪JDK1.8涔嬪墠锛孒ashMap鏄敱鏁扮粍+閾捐〃缁勬垚鐨勩€傛暟缁勬槸HashMap鐨勪富浣擄紝閾捐〃鐨勫瓨鍦ㄤ富瑕佹槸涓轰簡瑙e喅鍝堝笇鍐茬獊锛堚€滄媺閾炬硶鈥濊В鍐冲啿绐侊級銆侸DK1.8涔嬪悗锛屽湪瑙e喅hash鍐茬獊鏂归潰鏈変簡杈冨ぇ鐨勫彉鍖栥€傚綋閾捐〃闀垮害澶т簬闃堝€硷紙榛樿涓?锛夛紙閾捐〃杞孩榛戞爲鍓嶄細杩涜鍒ゆ柇锛屽鏋滃綋鍓嶆暟缁勯暱搴﹀皬浜?4锛屽垯涓簊electedExpandthearrayfirst,insteadofconvertingtoared-blacktree),convertthelinkedlistintoared-blacktreetoreducethesearchtime閾捐〃鎴栫孩榛戞爲銆傚彟澶栵紝LinkedHashMap鍦ㄤ笂杩扮粨鏋勭殑鍩虹涓婂鍔犱簡涓€涓弻鍚戦摼琛紝浣垮緱涓婅堪缁撴瀯鍙互缁存姢閿€煎鐨勬彃鍏ラ『搴忋€傚悓鏃讹紝閫氳繃瀵归摼琛ㄨ繘琛岀浉搴旂殑鎿嶄綔锛屽疄鐜拌闂『搴忕浉鍏崇殑閫昏緫銆傝瑙侊細銆奓inkedHashMap 婧愮爜璇︾粏鍒嗘瀽锛圝DK1.8锛夈€婬ashtable锛氱敱鏁扮粍+閾捐〃缁勬垚锛屾暟缁勬槸Hashtable鐨勪富浣擄紝閾捐〃鏄竴涓猅reeMap锛屼富瑕佹槸涓轰簡瑙e喅hash鍐茬獊鑰屽瓨鍦ㄧ殑锛欻owtochooseasetfora绾㈤粦鏍戯紙鑷钩琛℃帓搴忎簩鍙夋爲锛夛紵涓昏鏄牴鎹棌鍝佺殑鐗圭偣鏉ラ€夋嫨銆傛瘮濡傛垜浠渶瑕佹牴鎹甼ey鍊艰幏鍙栧厓绱犲€肩殑鏃跺€欙紝鎴戜滑閫夋嫨Map鎺ュ彛涓嬬殑collection銆傚綋鎴戜滑闇€瑕佹帓搴忔椂锛屾垜浠€夋嫨TreeMap銆傚綋鎴戜滑涓嶉渶瑕佹帓搴忔椂锛屾垜浠€夋嫨HashMap銆傚鏋滄垜浠渶瑕佷繚璇佺嚎绋嬪畨鍏紝鎴戜滑閫夋嫨ConcurrentHashMap銆傚綋鎴戜滑鍙渶瑕佸瓨鍌ㄥ厓绱犲€兼椂锛屾垜浠€夋嫨涓€涓疄鐜颁簡Collection鎺ュ彛鐨勯泦鍚堛€傚綋鎴戜滑闇€瑕佷繚璇佸厓绱犵殑鍞竴鎬ф椂锛屾垜浠€夋嫨涓€涓疄鐜颁簡Set鎺ュ彛鐨勯泦鍚堬紝姣斿TreeSet鎴栬€匟ashSet銆傞€夋嫨杩欎簺鎺ュ彛闆嗗悎鐨勭壒寰併€備负浠€涔堣浣跨敤闆嗗悎锛熷綋鎴戜滑闇€瑕佷繚瀛樹竴缁勭浉鍚岀被鍨嬬殑鏁版嵁鏃讹紝搴旇浣跨敤瀹瑰櫒鏉ヤ繚瀛樸€傝繖涓鍣ㄦ槸涓€涓暟缁勩€備絾鏄敤鏁扮粍鏉ュ瓨鍌ㄥ璞′篃鏈変竴瀹氱殑缂虹偣锛屽洜涓哄湪鎴戜滑瀹為檯寮€鍙戜腑锛屽瓨鍌ㄧ殑鏁版嵁绫诲瀷鏄绉嶅鏍风殑锛屾墍浠ュ氨鍑虹幇浜嗏€滈泦鍚堚€濓紝闆嗗悎涔熸槸鐢ㄦ潵瀛樺偍澶氱鏁版嵁鐨勩€傛暟缁勭殑缂虹偣鏄竴鏃﹀0鏄庯紝闀垮害鏄笉鍙彉鐨勶紱鍚屾椂锛屽0鏄庢暟缁勬椂鐨勬暟鎹被鍨嬩篃鍐冲畾浜嗘暟缁勪腑瀛樺偍鐨勬暟鎹被鍨嬶紱鑰屼笖锛屾暟缁勪腑瀛樺偍鐨勬暟鎹槸鏈夊簭鐨勩€佸彲閲嶅鐨勶紝鍏锋湁鍗曚竴鐨勭壒鐐广€備絾鏄泦鍚堟彁楂樹簡鏁版嵁瀛樺偍鐨勭伒娲绘€с€侸ava闆嗗悎涓嶄粎鍙互瀛樺偍涓嶅悓绫诲瀷鍜屾暟閲忕殑瀵硅薄锛岃繕鍙互瀛樺偍鍏锋湁鏄犲皠鍏崇郴鐨勬暟鎹€侰ollection瀛愭帴鍙d腑鐨凩istArraylist鍜孷ector鏈変粈涔堝尯鍒紵ArrayList鏄疞ist鐨勪富瑕佸疄鐜扮被锛屽簳灞備娇鐢∣bject[]瀛樺偍锛岄€傚悎棰戠箒鏌ユ壘宸ヤ綔锛岀嚎绋嬩笉瀹夊叏锛沄ector鏄疞ist鐨勪竴涓彜鑰佺殑瀹炵幇绫伙紝搴曞眰浣跨敤Object[]瀛樺偍锛岀嚎绋嬪畨鍏ㄣ€侫rraylist鍜孡inkedList鏈変粈涔堝尯鍒紵鏄惁淇濊瘉绾跨▼瀹夊叏锛欰rrayList鍜孡inkedList閮芥槸寮傛鐨勶紝鍗充笉淇濊瘉绾跨▼瀹夊叏锛涘簳灞傛暟鎹粨鏋勶細Arraylist搴曞眰浣跨敤鐨勬槸Object鏁扮粍锛汱inkedList搴曞眰浣跨敤鐨勬槸鍙屽悜閾捐〃鏁版嵁缁撴瀯锛圝DK1.6涔嬪墠鏄惊鐜摼琛紝JDK1.7鍙栨秷浜嗗惊鐜€傛敞鎰忓弻鍚戦摼琛ㄥ拰鍙屽悜寰幆閾捐〃鐨勫尯鍒紝杩欓噷浠嬬粛涓嬮潰锛侊級鎻掑叆鍜屽垹闄ゆ槸鍚﹀彈鍏冪礌浣嶇疆鐨勫奖鍝嶏細ArrayList浣跨敤鏁扮粍瀛樺偍锛屾墍浠ュ厓绱犵殑鎻掑叆鍜屽垹闄ゆ椂闂村鏉傚害鍙楀厓绱犱綅缃殑褰卞搷銆備緥濡傦細鎵цadd(Ee)鏂规硶鏃讹紝ArrayList榛樿浼氬皢鎸囧畾鍏冪礌杩藉姞鍒板垪琛ㄦ湯灏俱€傚湪杩欑鎯呭喌涓嬶紝鏃堕棿澶嶆潅搴︿负O(1)銆備絾鏄鏋滆鍦ㄦ寚瀹氫綅缃甶澶勬彃鍏ュ拰鍒犻櫎鍏冪礌锛坅dd(intindex,Eelement)锛夛紝鏃堕棿澶嶆潅搴︿负O(n-i)銆傚洜涓哄湪杩涜涓婅堪鎿嶄綔鏃讹紝闆嗗悎涓i涓厓绱犱箣鍚庣殑绗琲涓拰绗?n-i)涓厓绱犻兘蹇呴』杩涜鍚戝悗/鍚戝墠绉诲姩涓€浣嶇殑鎿嶄綔銆侺inkedList瀛樺偍鍦ㄤ竴涓摼琛ㄤ腑锛屾墍浠ュ鏋滃湪澶村熬鎻掑叆鎴栧垹闄ゅ厓绱狅紝涓嶄細鍙楀埌鍏冪礌浣嶇疆鐨勫奖鍝?add(Ee),addFirst(Ee),addLast(Ee),removeFirst(),removeLast()),鏃堕棿澶嶆潅搴︿负O(1)銆傚鏋滆鍦ㄦ寚瀹氫綅缃甶鎻掑叆鍜屽垹闄ゅ厓绱?add(intindex,Eelement),remove(Objecto))锛屾椂闂村鏉傚害涓篛(n)锛屽洜涓洪渶瑕佸厛绉诲姩鍒版寚瀹氫綅缃紝鐒跺悗鎻掑叆銆傛槸鍚︽敮鎸佸揩閫熼殢鏈鸿闂細LinkedList涓嶆敮鎸侀珮鏁堢殑闅忔満鍏冪礌璁块棶锛岃€孉rrayList鏀寔銆傚揩閫熼殢鏈鸿闂槸閫氳繃鍏冪礌鐨勫簭鍙凤紙瀵瑰簲get(intindex)鏂规硶锛夊揩閫熻幏鍙栧厓绱犲璞°€傚唴瀛樼┖闂村崰鐢細ArrayList鐨勭┖闂存氮璐逛富瑕佷綋鐜板湪list鍒楄〃鏈熬棰勭暀浜嗕竴瀹氬閲忕殑绌洪棿锛岃€孡inkedList鐨勭┖闂村紑閿€浣撶幇鍦ㄥ畠鐨勬瘡涓€涓厓绱犻兘闇€瑕佹瘮ArrayList娑堣€楁洿澶氱殑绌洪棿锛堝洜涓哄畠闇€瑕佸瓨鍌ㄧ洿鎺ュ悗缁у拰鐩存帴鍓嶅鍜屾暟鎹級銆傛垜浠竴鑸笉浼氬湪椤圭洰涓娇鐢↙inkedList銆傚嚑涔庢墍鏈夐渶瑕丩inkedList鐨勫満鏅兘鍙互鐢ˋrrayList浠f浛锛岃€屼笖鎬ц兘閫氬父鏇村ソ锛佸氨杩濴inkedList鐨勪綔鑰匤oshBloch涔熻浠栬嚜宸辨案杩滀笉浼氫娇鐢↙inkedList銆傚彟澶栵紝涓嶈涓嬫剰璇嗙殑璁や负LinkedList鏈€閫傚悎浣滀负閾捐〃鏉ュ鍒犲厓绱犮€備笂闈㈡垜涔熻浜嗭紝LinkedList鐨勬椂闂村鏉傚害鍙湁鍦ㄥご閮ㄥ拰灏鹃儴鎻掑叆鎴栧垹闄ゅ厓绱犳椂澶х害涓篛(1)锛屽叾浠栨儏鍐典笅娣诲姞鎴栧垹闄ゅ厓绱犵殑鏃堕棿澶嶆潅搴︿负O(n)銆傝ˉ鍏呭唴瀹癸細鍙屽悜閾捐〃鍜屽弻鍚戝惊鐜摼琛ㄥ弻鍚戦摼琛細鍖呭惈涓や釜鎸囬拡锛屼竴涓猵rev鎸囧悜涓婁竴涓妭鐐癸紝涓€涓猲ext鎸囧悜涓嬩竴涓妭鐐广€傚彟澶栨帹鑽愪竴绡囨妸鍙屽悜閾捐〃瑙i噴娓呮鐨勬枃绔狅細https://juejin.cn/post/6844903648154271757鍙屽悜寰幆閾捐〃锛氭渶鍚庝竴涓妭鐐圭殑next鎸囧悜head锛宧ead鐨刾rev鎸囧悜head鍒版渶鍚庝竴涓妭鐐癸紝褰㈡垚涓€涓幆銆傝ˉ鍏呭唴瀹癸細RandomAccessinterfacepublicinterfaceRandomAccess{}鏌ョ湅婧愮爜锛屽彂鐜癛andomAccess鎺ュ彛涓叾瀹炲苟娌℃湁瀹氫箟浠€涔堛€傚洜姝わ紝鍦ㄦ垜鐪嬫潵锛孯andomAccess鎺ュ彛鍙笉杩囨槸涓€涓爣璇嗙銆傝瘑鍒粈涔堬紵瀹炵幇姝ゆ帴鍙g殑绫昏鏍囪瘑涓哄叿鏈夐殢鏈鸿闂姛鑳姐€傚湪binarySearch()鏂规硶涓紝闇€瑕佸垽鏂紶鍏ョ殑list鏄惁鏄疪andomAccess鐨勫疄渚嬶紝濡傛灉鏄紝鍒欒皟鐢╥ndexedBinarySearch()鏂规硶锛屽鏋滀笉鏄紝鍒欒皟鐢╥teratorBinarySearch()鏂规硶publicstaticintbinarySearch(List>list,Tkey){if(listinstanceofRandomAccess||list.size()arrayList=newArrayList()arrayList.add(-1);arrayList.add(3);arrayList.add(3);arrayList.add(-5);arrayList.add(7);arrayList.add(4);arrayList.add(-9);arrayList.add(-7);System.out.println("鍘熸暟缁勶細");System.out.println(arrayList);//voidreverse(Listlist):reverseCollections.reverse(arrayList);System.out.println("Collections.reverse(arrayList):");System.out.println(arrayList);//voidsort(Listlist)锛屽崌搴忚嚜鐒舵帓搴廋ollections.sort(arrayList);绯荤粺銆俹ut.println("Collections.sort(arrayList):");System.out.println(arrayList);//鑷畾涔夋帓搴忕敤娉旵ollections.sort(arrayList,newComparator(){@Overridepublicintcompare(Integero1,Integero2){returno2.compareTo(o1);}});System.out.println("鑷畾涔夋帓搴忓悗锛?);System.out.println(arrayList);杈撳嚭锛氬師濮嬫暟缁勶細[-1,3,3,-5,7,4,-9,-7]Collections.reverse(arrayList):[-7,-9,4,7,-5,3,3,-1]Collections.sort(arrayList):[-9,-7,-5,-1,3,3,4,7]鑷畾涔夋帓搴忓悗锛歔7,4,3,3,-1,-5,-7,-9]鍐檆ompareTo鏂规硶鎸夊勾榫勬帓搴?/person瀵硅薄娌℃湁瀹炵幇Comparable鎺ュ彛锛屽繀椤诲疄鐜版墠涓嶄細鎶ラ敊treemap涓殑鏁版嵁鍙互鎸夐『搴忔帓鍒?/鍓嶉潰渚嬪瓙涓殑String绫诲凡缁忛粯璁ゅ疄鐜颁簡Comparable鎺ュ彛锛屽叿浣撳彲浠ユ煡鐪婼tring绫荤殑API鏂囨。锛屽叾浠栫被濡侷nteger閮藉凡缁忓疄鐜颁簡Comparable鎺ュ彛鐜板湪鍙敤锛屽洜姝ゆ棤闇€瀹炵幇publicclassPersonimplementsComparable{privateStringname;绉佷汉骞撮緞;publicPerson(Stringname,intage){super();this.name=鍚嶇О锛涜繖銆傚勾榫?骞撮緞锛泒publicStringgetName(){杩斿洖鍚嶇О锛泒publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){杩斿洖骞撮緞锛泒publicvoidsetAge(intage){杩欎釜銆傚勾榫?骞撮緞锛泒/***T瑕嗙洊compareTo鏂规硶浠ユ寜骞撮緞鎺掑簭*/@OverridepublicintcompareTo(Persono){if(this.age>o.getAge()){return1;}if(this.agepdata=newTreeMap();pdata.put(newPerson("寮犱笁",30),"寮犱笁");pdata.put(newPerson("鏉庡洓",20),"lisi");pdata.put(newPerson("鐜嬩簲",10),"wangwu");pdata.put(newPerson("灏忕孩",5),"灏忕孩");//鑾峰彇key鐨勫€煎拰key瀵瑰簲鐨勫€糞etkeys=pdata.keySet();for(Personkey:keys){System.out.println(key.getAge()+"-"+key.getName());}}杈撳嚭锛?-灏忕孩10-鐜嬭垶20-鏉庡洓30-寮犱笁鏃犲簭鍜屼笉鍙噸澶嶆€ф槸浠€涔堟剰鎬?.浠€涔堟槸鏃犲簭锛熸棤搴忎笉绛変簬闅忔満銆傛棤搴忔槸鎸囧瓨鍌ㄧ殑鏁版嵁鍦ㄥ簳灞傛暟缁勪腑涓嶆槸鎸夌収鏁扮粍绱㈠紩鐨勯『搴忔坊鍔犵殑锛岃€屾槸鏍规嵁鏁版嵁鐨勫搱甯屽€兼潵纭畾鐨勩€?.浠€涔堟槸涓嶅彲閲嶅鎬э紵涓嶅彲閲嶅鎬ф槸鎸囨牴鎹甧quals()鍒ゆ柇娣诲姞鐨勫厓绱犳椂杩斿洖false锛岄渶瑕佸悓鏃堕噸鍐檈quals()鏂规硶鍜孒ashCode()鏂规硶銆傛瘮杈僅ashSet銆丩inkedHashSet鍜孴reeSet鐨勫紓鍚孒ashSet锛孡inkedHashSet鍜孴reeSet閮芥槸Set鎺ュ彛鐨勫疄鐜扮被锛屽彲浠ヤ繚璇佸厓绱犵殑鍞竴鎬э紝涓嶆槸绾跨▼瀹夊叏鐨勩€侶ashSet銆丩inkedHashSet鍜孴reeSet涔嬮棿鐨勪富瑕佸尯鍒湪浜庡簳灞傛暟鎹粨鏋勩€侶ashSet鐨勫簳灞傛暟鎹粨鏋勬槸鍝堝笇琛紙鍩轰簬HashMap瀹炵幇锛夈€侺inkedHashSet搴曞眰鏁版嵁缁撴瀯鏄摼琛ㄥ拰鍝堝笇琛紝鍏冪礌鐨勬彃鍏ュ拰绉婚櫎椤哄簭婊¤冻FIFO銆俆reeSet搴曞眰鏁版嵁缁撴瀯鏄竴妫电孩榛戞爲锛屽厓绱犳槸鏈夊簭鐨勶紝鎺掑簭鏂瑰紡鍖呮嫭鑷劧鎺掑簭鍜岃嚜瀹氫箟鎺掑簭銆備笉鍚岀殑搴曞眰鏁版嵁缁撴瀯瀵艰嚧涓夎€呯殑搴旂敤鍦烘櫙涓嶅悓銆侶ashSet鐢ㄤ簬涓嶉渶瑕佷繚璇佸厓绱犳彃鍏ュ拰鎻愬彇椤哄簭鐨勫満鏅紝LinkedHashSet鐢ㄤ簬淇濊瘉鍏冪礌鎻掑叆鍜屾彁鍙栭『搴忔弧瓒矲IFO鐨勫満鏅紝TreeSet鐢ㄤ簬鏀寔鍏冪礌鑷畾涔夋帓搴忚鍒欑殑鍦烘櫙.Collection瀛愭帴鍙ueue涓璔ueueQueue鍜孌eque鐨勫尯鍒槸鍗曠闃熷垪锛屽彧鑳戒粠涓€绔彃鍏ュ厓绱狅紝浠庡彟涓€绔垹闄ゅ厓绱犮€傚疄鐜伴€氬父閬靛惊鍏堣繘鍏堝嚭(FIFO)瑙勫垯銆俀ueue鎵╁睍浜咰ollection鎺ュ彛锛屾牴鎹閲忛棶棰樺鑷存搷浣滃け璐ュ悗鐨勫鐞嗘柟寮忎笉鍚岋紝鍙互鍒嗕负涓ょ鏂规硶锛氫竴绉嶆槸鎿嶄綔澶辫触鍚庢姏鍑哄紓甯革紝鍙︿竴绉嶆槸杩斿洖涓€涓壒娈婄殑鍊笺€俀ueue鎺ュ彛鎶涘嚭寮傚父杩斿洖涓€涓壒娈婂€兼彃鍏ュ埌闃熷熬add(Ee)offer(Ee)鍒犻櫎闃熷ごremove()poll()鏌ヨ闃熷ご鍏冪礌element()peek()Deque鏄竴涓弻绔槦鍒楋紝闃熷垪鐨勪袱绔兘鍙互鎻掑叆鎴栧垹闄ゅ厓绱犮€侱eque鎵╁睍浜哘ueue鐨勬帴鍙o紝鍦ㄩ槦鍒楃殑澶撮儴鍜屽熬閮ㄦ坊鍔犱簡鎻掑叆鍜屽垹闄ょ殑鏂规硶銆傛牴鎹け璐ュ悗鐨勫鐞嗘柟寮忎笉鍚岋紝涔熷垎涓轰袱绉嶏細Deque鎺ュ彛鎶涘嚭寮傚父锛岃繑鍥炰竴涓壒娈婂€兼彃鍏ュ埌闃熷ごaddFirst(Ee)offerFirst(Ee)鎻掑叆鍒伴槦灏鹃槦鍒梐ddLast(Ee)offerLast(Ee)鍒犻櫎闃熷垪棣栧厓绱爎emoveFirst()pollFirst()鍒犻櫎闃熷垪灏鹃儴removeLast()pollLast()鏌ヨ闃熷垪棣栧厓绱爂etFirst()peekFirst()query闃熷垪鐨勫熬閮ㄥ厓绱爂etLast()peekLast()瀹為檯涓婏紝Deque杩樻彁渚涗簡push()鍜宲op()绛夊叾浠栨柟娉曪紝鍙互鐢ㄦ潵妯℃嫙鍫嗘爤銆侫rrayDeque鍜孡inkedList鐨勫尯鍒獳rrayDeque鍜孡inkedList閮藉疄鐜颁簡Deque鎺ュ彛锛岄兘鍏锋湁闃熷垪鐨勫姛鑳斤紝閭d箞涓よ€呮湁浠€涔堝尯鍒憿锛烝rrayDeque鏄熀浜庡彉闀挎暟缁勫拰鍙屾寚閽堝疄鐜扮殑锛岃€孡inkedList鏄€氳繃閾捐〃瀹炵幇鐨勩€侫rrayDeque涓嶆敮鎸佸瓨鍌∟ULL鏁版嵁锛屼絾LinkedList鏀寔銆侫rrayDeque鏄疛DK1.6寮曞叆鐨勶紝鑰孡inkedList鏃╁湪JDK1.2灏辨湁浜嗐€侫rrayDeque鎻掑叆鐨勬椂鍊欏彲鑳戒細鏈変竴涓墿瀹圭殑杩囩▼锛屼絾鏄垎鎽婄殑鎻掑叆鎿嶄綔杩樻槸O(1)銆侺inkedList铏界劧涓嶉渶瑕佹墿瀹癸紝浣嗘瘡娆℃彃鍏ユ暟鎹兘闇€瑕佺敵璇锋柊鐨勫爢绌洪棿锛屾憡閿€鎬ц兘杈冩參銆備粠鎬ц兘鐨勮搴︽潵璇达紝閫夋嫨ArrayDeque鏉ュ疄鐜皅ueue姣擫inkedList鏇村ソ銆傚彟澶朅rrayDeque涔熷彲浠ョ敤鏉ュ疄鐜版爤銆傚啀鏉ヨ璇碢riorityQueuePriorityQueue鏄湪JDK1.5涓紩鍏ョ殑銆傚畠涓嶲ueue鐨勫尯鍒湪浜庡厓绱犵殑鍑洪槦椤哄簭涓庝紭鍏堢骇鏈夊叧锛屽嵆浼樺厛绾ф渶楂樼殑鍏冪礌鎬绘槸鍏堝嚭闃熴€傝繖閲屾湁涓€浜涚浉鍏崇殑瑕佺偣锛歅riorityQueue鏄娇鐢ㄤ簩鍙夊爢鐨勬暟鎹粨鏋勫疄鐜扮殑锛屽簳灞備娇鐢ㄥ彉闀挎暟缁勫瓨鍌ㄦ暟鎹€侾riorityQueue閫氳繃娴矇鍫嗗厓绱犲疄鐜癘(logn)鏃堕棿銆傚湪澶嶆潅搴﹀唴鎻掑叆鍏冪礌骞跺垹闄ゅ爢椤跺厓绱犮€侾riorityQueue涓嶆槸绾跨▼瀹夊叏鐨勶紝涓嶆敮鎸佸瓨鍌∟ULL鍜屼笉鍙瘮杈冪殑瀵硅薄銆侾riorityQueue榛樿鏄竴涓皬椤跺爢锛屼絾鏄彲浠ユ帴鏀朵竴涓狢omparator浣滀负鏋勯€犲弬鏁版潵鑷畾涔夊厓绱犵殑浼樺厛绾с€侾riorityQueue鍦ㄩ潰璇曚腑鍙兘鏇村鐨勫嚭鐜板湪鎵嬪垎绠楁硶涓€傚吀鍨嬬殑渚嬪瓙鍖呮嫭鍫嗘帓搴忋€佸鎵剧K澶ф暟銆侀亶鍘嗗甫鏉冨浘绛夛紝闇€瑕佺啛缁冧娇鐢ㄣ€傚悗璁颁笓娉↗ava鍘熷垱骞茶揣鍒嗕韩锛屽垵绾у紑婧怞avaGuide锛堛€奐ava瀛︿範+闈㈣瘯鎸囧崡銆嬫兜鐩栧ぇ閮ㄥ垎Java绋嬪簭鍛橀渶瑕佹帉鎻$殑鏍稿績鐭ヨ瘑锛屽噯澶嘕ava闈㈣瘯锛孞avaGuide鏄閫夛紒锛夛紝鐩墠鏈?20k+鏄熸槦銆傚鏋滆繖绡囨枃绔犲浣犳湁甯姪锛岃鐐硅禐鍜屽垎浜紝缁х画鍒嗕韩鍜屽垱閫犻珮璐ㄩ噺鐨勬枃绔犲鎴戞潵璇村緢閲嶈銆傝阿璋煓忦煆?/p>