JAVA »ù´¡5 :: ÎÏÅ£µÄ½Å²½

来源: BlogBus 原始链接: http://www.blogbus.com:80/blogbus/blog/diary.php?diaryid=321611 存档链接: https://web.archive.org/web/20041001063518id_/http://www.blogbus.com:80/blogbus/blog/diary.php?diaryid=321611


ÎÏÅ£µÄ½Å²½ ÂýÂýµÄÅÀ ÓÀ²»Í£Ï¢................. <<<JAVA »ù´¡4 | Ê×Ò³ | MySql ÈëÃÅ>>> JAVA »ù´¡5 ʱ¼ä£º2004-08-11 Vector»¹ÊÇArrayListÕâÊǸöÎÊÌâ ¨D¨D±È½ÏVectorºÍArrayListµÄ²»Í¬ ÒëÕßÓÄÇÌìÒ»¸öºÃÅóÓÑÎÊÎÒVectorºÍArrayListµ½µ×ÓÐÊ²Ã´Çø±ðÓÃÄǸöºÃ£¬×Ô¼ºÒ²²»ÊǺÜÇå³þ£¬ÓÚÊǺõ°á³öÊé¿´Á˸ö¹»µ«ÊÇÊéÀïҲûÓÐרÃŶԴ˽øÐбȽϣ¬ºÇºÇ£¬Ë÷ÐÔ»ÆÌì²»¸ºÓÐÐÄÈË£¬ÖÕÓÚ±»ÎÒÕÒµ½ÁËÎÊÌâµÄ´ð°¸£¬ÕâÀïÎÒ°ÑËü·­Òë¹ýÀ´£¬Ï£Íû¶Ô´ó¼ÒÓÐËù°ïÖú¡£ÓÐʲô·­ÒëµÄ²»¶ÔµÄµØ·½»¹ÍûÖ¸Õý:) Ô­ÎÄ£º http://www.javaworld.com/javaworld/javaqa/2001-06/03-qa-0622-vector.html? Vector »¹ÊÇArrayList¨D¨DÄÄÒ»¸ö¸üºÃ£¬ÎªÊ²Ã´£¿ Òª»Ø´ðÕâ¸öÎÊÌâ²»ÄÜÒ»¸Å¶øÂÛ£¬ÓÐʱºòʹÓÃVector±È½ÏºÃ£»ÓÐʱÊÇArrayList£¬ÓÐʱºòÕâÁ½¸ö¶¼²»ÊÇ×îºÃµÄÑ¡Ôñ¡£Äã±ðÖ¸ÍûÄܹ»»ñµÃÒ»¸ö¼òµ¥¿Ï¶¨´ð°¸£¬ÒòΪÕâÒª¿´ÄãÓÃËüÃǸÉʲô¡£ÏÂÃæÓÐ4¸öÒª¿¼ÂǵÄÒòËØ£º l API l ͬ²½´¦Àí l Êý¾ÝÔö³¤ÐÔ l ʹÓÃģʽ ÏÂÃæÕë¶ÔÕâ4¸ö·½Ãæ½øÐÐһһ̽ÌÖ API ÔÚÓÉKen ArnoldµÈ±àÖøµÄ¡¶Java Programming Language¡·(Addison-Wesley, June 2000)Ò»ÊéÖÐÓÐÕâÑùµÄÃèÊö£¬VectorÀàËÆÓÚArrayList.¡£ËùÓдÓAPIµÄ½Ç¶ÈÀ´¿´ÕâÁ½¸öÀà·Ç³£Ïà[b]ËÆ¡£µ«ËûÃÇÖ®¼äÒ²»¹ÊÇÓÐһЩÖ÷ÒªµÄÇø±ðµÄ¡£ ͬ²½ÐÔ VectorÊÇͬ²½µÄ¡£Õâ¸öÀàÖеÄһЩ·½·¨±£Ö¤ÁËVectorÖеĶÔÏóÊÇḬ̈߳²È«µÄ¡£¶øArrayListÔòÊÇÒì²½µÄ£¬Òò´ËArrayListÖеĶÔÏó²¢²»ÊÇḬ̈߳²È«µÄ¡£ÒòΪͬ²½µÄÒªÇó»áÓ°ÏìÖ´ÐеÄЧÂÊ£¬ËùÒÔÈç¹ûÄã²»ÐèÒªḬ̈߳²È«µÄ¼¯ºÏÄÇôʹÓÃArrayListÊÇÒ»¸öºÜºÃµÄÑ¡Ôñ£¬ÕâÑù¿ÉÒÔ±ÜÃâÓÉÓÚͬ²½´øÀ´µÄ²»±ØÒªµÄÐÔÄÜ¿ªÏú¡£ Êý¾ÝÔö³¤ ´ÓÄÚ²¿ÊµÏÖ»úÖÆÀ´½²ArrayListºÍVector¶¼ÊÇʹÓÃÊý×é(Array)À´¿ØÖƼ¯ºÏÖеĶÔÏó¡£µ±ÄãÏòÕâÁ½ÖÖÀàÐÍÖÐÔö¼ÓÔªËØµÄʱºò£¬Èç¹ûÔªËØµÄÊýÄ¿³¬³öÁËÄÚ²¿Êý×éĿǰµÄ³¤¶ÈËüÃǶ¼ÐèÒªÀ©Õ¹ÄÚ²¿Êý×éµÄ³¤¶È£¬VectorȱʡÇé¿öÏÂ×Ô¶¯Ôö³¤Ô­À´Ò»±¶µÄÊý×鳤¶È£¬ArrayListÊÇÔ­À´µÄ50%,ËùÒÔ×îºóÄã»ñµÃµÄÕâ¸ö¼¯ºÏËùÕ¼µÄ¿Õ¼ä×ÜÊDZÈÄãʵ¼ÊÐèÒªµÄÒª´ó¡£ËùÒÔÈç¹ûÄãÒªÔÚ¼¯ºÏÖб£´æ´óÁ¿µÄÊý¾ÝÄÇôʹÓÃVectorÓÐһЩÓÅÊÆ£¬ÒòΪÄã¿ÉÒÔͨ¹ýÉèÖü¯ºÏµÄ³õʼ»¯´óСÀ´±ÜÃâ²»±ØÒªµÄ×ÊÔ´¿ªÏú¡£ ʹÓÃģʽ ÔÚArrayListºÍVectorÖУ¬´ÓÒ»¸öÖ¸¶¨µÄλÖã¨Í¨¹ýË÷Òý£©²éÕÒÊý¾Ý»òÊÇÔÚ¼¯ºÏµÄĩβÔö¼Ó¡¢ÒƳýÒ»¸öÔªËØËù»¨·ÑµÄʱ¼äÊÇÒ»ÑùµÄ£¬Õâ¸öʱ¼äÎÒÃÇÓÃO(1)±íʾ¡£µ«ÊÇ£¬Èç¹ûÔÚ¼¯ºÏµÄÆäËûλÖÃÔö¼Ó»òÒÆ³ýÔªËØÄÇô»¨·ÑµÄʱ¼ä»á³ÊÏßÐÎÔö³¤£ºO(n-i)£¬ÆäÖÐn´ú±í¼¯ºÏÖÐÔªËØµÄ¸öÊý£¬i´ú±íÔªËØÔö¼Ó»òÒÆ³ýÔªËØµÄË÷ÒýλÖá£ÎªÊ²Ã´»áÕâÑùÄØ£¿ÒÔΪÔÚ½øÐÐÉÏÊö²Ù×÷µÄʱºò¼¯ºÏÖеÚiºÍµÚi¸öÔªËØÖ®ºóµÄËùÓÐÔªËØ¶¼ÒªÖ´ÐÐÎ»ÒÆµÄ²Ù×÷¡£ÕâÒ»ÇÐÒâζ×ÅÊ²Ã´ÄØ£¿ ÕâÒâζ×Å£¬ÄãÖ»ÊDzéÕÒÌØ¶¨Î»ÖõÄÔªËØ»òÖ»ÔÚ¼¯ºÏµÄÄ©¶ËÔö¼Ó¡¢ÒƳýÔªËØ£¬ÄÇôʹÓÃVector»òArrayList¶¼¿ÉÒÔ¡£Èç¹ûÊÇÆäËû²Ù×÷£¬Äã×îºÃÑ¡ÔñÆäËûµÄ¼¯ºÏ²Ù×÷Àà¡£±ÈÈ磬LinkList¼¯ºÏÀàÔÚÔö¼Ó»òÒÆ³ý¼¯ºÏÖÐÈκÎλÖõÄÔªËØËù»¨·ÑµÄʱ¼ä¶¼ÊÇÒ»ÑùµÄ¡ªO(1)£¬µ«ËüÔÚË÷ÒýÒ»¸öÔªËØµÄʹÓÃȱ±È½ÏÂý£­O(i),ÆäÖÐiÊÇË÷ÒýµÄλÖÃ.ʹÓÃArrayListÒ²ºÜÈÝÒ×£¬ÒòΪÄã¿ÉÒÔ¼òµ¥µÄʹÓÃË÷ÒýÀ´´úÌæ´´½¨iterator¶ÔÏóµÄ²Ù×÷¡£LinkListÒ²»áΪÿ¸ö²åÈëµÄÔªËØ´´½¨¶ÔÏó£¬ËùÓÐÄãÒªÃ÷°×ËüÒ²»á´øÀ´¶îÍâµÄ¿ªÏú¡£ ×îºó£¬ÔÚ¡¶Practical Java¡·Ò»ÊéÖÐPeter Haggar½¨ÒéʹÓÃÒ»¸ö¼òµ¥µÄÊý×飨Array£©À´´úÌæVector»òArrayList¡£ÓÈÆäÊǶÔÓÚÖ´ÐÐЧÂÊÒªÇó¸ßµÄ³ÌÐò¸üÓ¦Èç´Ë¡£ÒòΪʹÓÃÊý×é(Array)±ÜÃâÁËͬ²½¡¢¶îÍâµÄ·½·¨µ÷ÓúͲ»±ØÒªµÄÖØÐ·ÖÅä¿Õ¼äµÄ²Ù×÷¡£ Ïà¹Ø×ÊÔ´£º ¡¤ ¡¶Java±à³ÌÓïÑÔ¡· ×÷ÕߣºKen Arnold, James Gosling, and David Holmes http://www.amazon.com/exec/obidos/ASIN/0201704331/javaworld/ ¡¤ ¡¶ÊµÕ½ Java¡·×÷Õߣº Peter Haggar http://www.amazon.com/exec/obidos/ASIN/0201616467/javaworld/ ¡¤ ¸ü¶àÄÚÈÝÇë¿´ Java Q&A : http://www.javaworld.com/javaworld/javaqa/javaqa-index.html hashTableºÍhashMapµÄ²»Í¬ Hashtable¼Ì³Ð×ÔDictionaryÀ࣬¶øHashMapÊÇJava1.2Òý½øµÄMap interfaceµÄÒ»¸öʵÏÖ HashMapÔÊÐí½«null×÷Ϊһ¸öentryµÄkey»òÕßvalue£¬¶øHashtable²»ÔÊÐí »¹ÓоÍÊÇ£¬HashMap°ÑHashtableµÄcontains·½·¨È¥µôÁË£¬¸Ä³ÉcontainsvalueºÍcontainsKey¡£ÒòΪcontains·½·¨ÈÝÒ×ÈÃÈËÒýÆðÎó½â¡£ ×î´óµÄ²»Í¬ÊÇ£¬HashtableµÄ·½·¨ÊÇSynchronizeµÄ£¬¶øHashMap²»ÊÇ£¬ÔÚ ¶à¸öÏ̷߳ÃÎÊHashtableʱ£¬²»ÐèÒª×Ô¼ºÎªËüµÄ·½·¨ÊµÏÖͬ²½£¬¶øHashMap ¾Í±ØÐëΪ֮ÌṩÍâͬ²½¡£ HashtableºÍHashMap²ÉÓõÄhash/rehashËã·¨¶¼´ó¸ÅÒ»Ñù£¬ËùÒÔÐÔÄܲ»»áÓкܴóµÄ²îÒì¡£ Hashtable¼Ì³Ð×ÔDictionaryÀ࣬¶øHashMapÊÇJava1.2Òý½øµÄMap interfaceµÄÒ»¸öʵÏÖ HashMapÔÊÐí½«null×÷Ϊһ¸öentryµÄkey»òÕßvalue£¬¶øHashtable²»ÔÊÐí »¹ÓоÍÊÇ£¬HashMap°ÑHashtableµÄcontains·½·¨È¥µôÁË£¬¸Ä³ÉcontainsvalueºÍcontainsKey¡£ÒòΪcontains·½·¨ÈÝÒ×ÈÃÈËÒýÆðÎó½â¡£ ×î´óµÄ²»Í¬ÊÇ£¬HashtableµÄ·½·¨ÊÇSynchronizeµÄ£¬¶øHashMap²»ÊÇ£¬ÔÚ ¶à¸öÏ̷߳ÃÎÊHashtableʱ£¬²»ÐèÒª×Ô¼ºÎªËüµÄ·½·¨ÊµÏÖͬ²½£¬¶øHashMap ¾Í±ØÐëΪ֮ÌṩÍâͬ²½¡£ HashtableºÍHashMap²ÉÓõÄhash/rehashËã·¨¶¼´ó¸ÅÒ»Ñù£¬ËùÒÔÐÔÄܲ»»áÓкܴóµÄ²îÒì¡£ ×÷ÕßBlog£º http://blog.csdn.net/chensheng913/ ÏÂÃæÕâ¸ö½éÉÜJAVAµÄCollection¿ò¼Ü¸üÏêϸ http://www.delphibbs.com/keylife/iblog_show.asp?xid=5160 Javaƽ̨ÌṩÁËÒ»¸öÈ«Ðµļ¯ºÏ¿ò¼Ü¡£¡°¼¯ºÏ¿ò¼Ü¡±Ö÷ÒªÓÉÒ»×éÓÃÀ´²Ù×÷¶ÔÏóµÄ½Ó¿Ú×é³É¡£²»Í¬½Ó¿ÚÃèÊöÒ»×鲻ͬÊý¾ÝÀàÐÍ¡£ Java 2¼¯ºÏ¿ò¼Üͼ ¡¡¡¡¼¯ºÏ½Ó¿Ú£º6¸ö½Ó¿Ú£¨¶ÌÐéÏß±íʾ£©£¬±íʾ²»Í¬¼¯ºÏÀàÐÍ£¬ÊǼ¯ºÏ¿ò¼ÜµÄ»ù´¡¡£ ¡¡¡¡³éÏóÀࣺ5¸ö³éÏóÀࣨ³¤ÐéÏß±íʾ£©£¬¶Ô¼¯ºÏ½Ó¿ÚµÄ²¿·ÖʵÏÖ¡£¿ÉÀ©Õ¹Îª×Ô¶¨Ò弯ºÏÀà¡£ ¡¡¡¡ÊµÏÖÀࣺ8¸öʵÏÖÀࣨʵÏß±íʾ£©£¬¶Ô½Ó¿ÚµÄ¾ßÌåʵÏÖ¡£ ¡¡¡¡Ôںܴó³Ì¶ÈÉÏ£¬Ò»µ©ÄúÀí½âÁ˽ӿڣ¬Äú¾ÍÀí½âÁË¿ò¼Ü¡£ËäÈ»Äú×ÜÒª´´½¨½Ó¿ÚÌØ¶¨µÄʵÏÖ£¬µ«·ÃÎÊʵ¼Ê¼¯ºÏµÄ·½·¨Ó¦¸ÃÏÞÖÆÔÚ½Ó¿Ú·½·¨µÄʹÓÃÉÏ£»Òò´Ë£¬ÔÊÐíÄú¸ü¸Ä»ù±¾µÄÊý¾Ý½á¹¹¶ø²»±Ø¸Ä±äÆäËü´úÂë¡£ ¡¡¡¡¡¤ Collection ½Ó¿ÚÊÇÒ»×éÔÊÐíÖØ¸´µÄ¶ÔÏó¡£ ¡¡¡¡¡¤ Set ½Ó¿Ú¼Ì³Ð Collection£¬µ«²»ÔÊÐíÖØ¸´£¬Ê¹ÓÃ×Ô¼ºÄÚ²¿µÄÒ»¸öÅÅÁлúÖÆ¡£ ¡¡¡¡¡¤ List ½Ó¿Ú¼Ì³Ð Collection£¬ÔÊÐíÖØ¸´£¬ÒÔÔªËØ°²²åµÄ´ÎÐòÀ´·ÅÖÃÔªËØ£¬²»»áÖØÐÂÅÅÁС£ ¡¡¡¡¡¤ Map½Ó¿ÚÊÇÒ»×é³É¶ÔµÄ¼ü£­Öµ¶ÔÏ󣬼´Ëù³ÖÓеÄÊÇkey-value pairs¡£MapÖв»ÄÜÓÐÖØ¸´µÄkey¡£ÓµÓÐ×Ô¼ºµÄÄÚ²¿ÅÅÁлúÖÆ¡£ ¡¡¡¡¡¤ ÈÝÆ÷ÖеÄÔªËØÀàÐͶ¼ÎªObject¡£´ÓÈÝÆ÷È¡µÃÔªËØÊ±£¬±ØÐë°ÑËüת»»³ÉÔ­À´µÄÀàÐÍ¡£ ¡¡¡¡Java 2¼ò»¯¼¯ºÏ¿ò¼Üͼ ¼¯ºÏ½Ó¿Ú ¡¡¡¡1.Collection ½Ó¿Ú ¡¡¡¡ÓÃÓÚ±íʾÈκζÔÏó»òÔªËØ×é¡£ÏëÒª¾¡¿ÉÄÜÒÔ³£¹æ·½Ê½´¦ÀíÒ»×éÔªËØÊ±£¬¾ÍʹÓÃÕâÒ»½Ó¿Ú¡£ ¡¡¡¡(1) µ¥ÔªËØÌí¼Ó¡¢É¾³ý²Ù×÷£º ¡¡¡¡¡¡boolean add(Object o):½«¶ÔÏóÌí¼Ó¸ø¼¯ºÏ ¡¡¡¡¡¡boolean remove(Object o): Èç¹û¼¯ºÏÖÐÓÐÓëoÏàÆ¥ÅäµÄ¶ÔÏó£¬Ôòɾ³ý¶ÔÏóo ¡¡¡¡(2) ²éѯ²Ù×÷£º ¡¡¡¡¡¡int size() £º·µ»Øµ±Ç°¼¯ºÏÖÐÔªËØµÄÊýÁ¿ ¡¡¡¡¡¡boolean isEmpty() £ºÅжϼ¯ºÏÖÐÊÇ·ñÓÐÈκÎÔªËØ ¡¡¡¡¡¡boolean contains(Object o) £º²éÕÒ¼¯ºÏÖÐÊÇ·ñº¬ÓжÔÏóo ¡¡¡¡¡¡Iterator iterator() £º·µ»ØÒ»¸öµü´úÆ÷£¬ÓÃÀ´·ÃÎʼ¯ºÏÖеĸ÷¸öÔªËØ ¡¡¡¡(3) ×é²Ù×÷ £º×÷ÓÃÓÚÔªËØ×é»òÕû¸ö¼¯ºÏ ¡¡¡¡¡¡boolean containsAll(Collection c): ²éÕÒ¼¯ºÏÖÐÊÇ·ñº¬Óм¯ºÏc ÖÐËùÓÐÔªËØ ¡¡¡¡¡¡boolean addAll(Collection c) : ½«¼¯ºÏc ÖÐËùÓÐÔªËØÌí¼Ó¸ø¸Ã¼¯ºÏ ¡¡¡¡¡¡void clear(): ɾ³ý¼¯ºÏÖÐËùÓÐÔªËØ ¡¡¡¡¡¡void removeAll(Collection c) : ´Ó¼¯ºÏÖÐɾ³ý¼¯ºÏc ÖеÄËùÓÐÔªËØ ¡¡¡¡¡¡void retainAll(Collection c) : ´Ó¼¯ºÏÖÐɾ³ý¼¯ºÏc Öв»°üº¬µÄÔªËØ ¡¡¡¡(4) Collectionת»»ÎªObjectÊý×é £º ¡¡¡¡¡¡Object[] toArray() £º·µ»ØÒ»¸öÄÚº¬¼¯ºÏËùÓÐÔªËØµÄarray ¡¡¡¡¡¡Object[] toArray(Object[] a) £º·µ»ØÒ»¸öÄÚº¬¼¯ºÏËùÓÐÔªËØµÄarray¡£ÔËÐÐÆÚ·µ»ØµÄarrayºÍ²ÎÊýaµÄÐͱðÏàͬ£¬ÐèҪת»»ÎªÕýÈ·Ðͱ𡣠¡¡¡¡´ËÍ⣬Äú»¹¿ÉÒ԰Ѽ¯ºÏת»»³ÉÆäËüÈÎºÎÆäËüµÄ¶ÔÏóÊý×é¡£µ«ÊÇ£¬Äú²»ÄÜÖ±½Ó°Ñ¼¯ºÏת»»³É»ù±¾Êý¾ÝÀàÐ͵ÄÊý×飬ÒòΪ¼¯ºÏ±ØÐë³ÖÓжÔÏó¡£ ¡¡¡¡¡°Ð±Ìå½Ó¿Ú·½·¨ÊÇ¿ÉÑ¡µÄ¡£ÒòΪһ¸ö½Ó¿ÚʵÏÖ±ØÐëʵÏÖËùÓнӿڷ½·¨£¬µ÷ÓóÌÐò¾ÍÐèÒªÒ»ÖÖ;¾¶À´ÖªµÀÒ»¸ö¿ÉÑ¡µÄ·½·¨ÊDz»ÊDz»ÊÜÖ§³Ö¡£Èç¹ûµ÷ÓÃÒ»ÖÖ¿ÉÑ¡·½·¨Ê±£¬Ò»¸ö UnsupportedOperationException ±»Å׳ö£¬Ôò²Ù×÷ʧ°Ü£¬ÒòΪ·½·¨²»ÊÜÖ§³Ö¡£´ËÒì³£Àà¼Ì³Ð RuntimeException À࣬±ÜÃâÁ˽«ËùÓм¯ºÏ²Ù×÷·ÅÈë try-catch ¿é¡£¡± ¡¡¡¡Collection²»Ìṩget()·½·¨¡£Èç¹ûÒª±éÀúCollectinÖеÄÔªËØ£¬¾Í±ØÐëÓÃIterator¡£ ¡¡¡¡1.1.AbstractCollection ³éÏóÀà ¡¡¡¡AbstractCollection ÀàÌṩ¾ßÌå¡°¼¯ºÏ¿ò¼Ü¡±ÀàµÄ»ù±¾¹¦ÄÜ¡£ËäÈ»Äú¿ÉÒÔ×ÔÐÐʵÏÖ Collection ½Ó¿ÚµÄËùÓз½·¨£¬µ«ÊÇ£¬³ýÁËiterator()ºÍsize()·½·¨ÔÚÇ¡µ±µÄ×ÓÀàÖÐʵÏÖÒÔÍ⣬ÆäËüËùÓз½·¨¶¼ÓÉ AbstractCollection ÀàÀ´ÌṩʵÏÖ¡£Èç¹û×ÓÀ಻¸²¸ÇijЩ·½·¨£¬¿ÉÑ¡µÄÈçadd()Ö®ÀàµÄ·½·¨½«Å׳öÒì³£¡£ ¡¡¡¡1.2.Iterator ½Ó¿Ú ¡¡¡¡Collection ½Ó¿ÚµÄiterator()·½·¨·µ»ØÒ»¸ö Iterator¡£Iterator½Ó¿Ú·½·¨ÄÜÒÔµü´ú·½Ê½Öð¸ö·ÃÎʼ¯ºÏÖи÷¸öÔªËØ£¬²¢°²È«µÄ´ÓCollection ÖгýÈ¥Êʵ±µÄÔªËØ¡£ ¡¡¡¡(1) boolean hasNext(): ÅжÏÊÇ·ñ´æÔÚÁíÒ»¸ö¿É·ÃÎʵÄÔªËØ ¡¡¡¡¡¡¡¡Object next(): ·µ»ØÒª·ÃÎʵÄÏÂÒ»¸öÔªËØ¡£Èç¹ûµ½´ï¼¯ºÏ½á⣬ÔòÅ׳öNoSuchElementExceptionÒì³£¡£ ¡¡¡¡(2) void remove(): ɾ³ýÉϴηÃÎÊ·µ»ØµÄ¶ÔÏó¡£±¾·½·¨±ØÐë½ô¸úÔÚÒ»¸öÔªËØµÄ·ÃÎʺóÖ´ÐС£Èç¹ûÉϴηÃÎʺ󼯺ÏÒѱ»Ð޸쬷½·¨½«Å׳öIllegalStateException¡£ ¡¡¡¡¡°IteratorÖÐɾ³ý²Ù×÷¶Ôµ×²ãCollectionÒ²ÓÐÓ°Ïì¡£¡± ¡¡¡¡µü´úÆ÷ÊÇ ¹ÊÕÏ¿ìËÙÐÞ¸´£¨fail-fast£©µÄ¡£ÕâÒâζ×Å£¬µ±ÁíÒ»¸öÏß³ÌÐ޸ĵײ㼯ºÏµÄʱºò£¬Èç¹ûÄúÕýÔÚÓà Iterator ±éÀú¼¯ºÏ£¬ÄÇô£¬Iterator¾Í»áÅ׳ö ConcurrentModificationException £¨ÁíÒ»ÖÖ RuntimeExceptionÒì³££©Òì³£²¢Á¢¿Ìʧ°Ü¡£ 2.List½Ó¿Ú ¡¡¡¡List ½Ó¿Ú¼Ì³ÐÁË Collection ½Ó¿ÚÒÔ¶¨ÒåÒ»¸öÔÊÐíÖØ¸´ÏîµÄÓÐÐò¼¯ºÏ¡£¸Ã½Ó¿Ú²»µ«Äܹ»¶ÔÁбíµÄÒ»²¿·Ö½øÐд¦Àí£¬»¹Ìí¼ÓÁËÃæÏòλÖõIJÙ×÷¡£ ¡¡¡¡(1) ÃæÏòλÖõIJÙ×÷°üÀ¨²åÈëij¸öÔªËØ»ò Collection µÄ¹¦ÄÜ£¬»¹°üÀ¨»ñÈ¡¡¢³ýÈ¥»ò¸ü¸ÄÔªËØµÄ¹¦ÄÜ¡£ÔÚ List ÖÐËÑË÷ÔªËØ¿ÉÒÔ´ÓÁбíµÄÍ·²¿»òβ²¿¿ªÊ¼£¬Èç¹ûÕÒµ½ÔªËØ£¬»¹½«±¨¸æÔªËØËùÔÚµÄλÖà : ¡¡¡¡void add(int index, Object element): ÔÚÖ¸¶¨Î»ÖÃindexÉÏÌí¼ÓÔªËØelement ¡¡¡¡boolean addAll(int index, Collection c): ½«¼¯ºÏcµÄËùÓÐÔªËØÌí¼Óµ½Ö¸¶¨Î»ÖÃindex ¡¡¡¡Object get(int index): ·µ»ØListÖÐÖ¸¶¨Î»ÖõÄÔªËØ ¡¡¡¡int indexOf(Object o): ·µ»ØµÚÒ»¸ö³öÏÖÔªËØoµÄλÖ㬷ñÔò·µ»Ø-1 ¡¡¡¡int lastIndexOf(Object o) £º·µ»Ø×îºóÒ»¸ö³öÏÖÔªËØoµÄλÖ㬷ñÔò·µ»Ø-1 ¡¡¡¡Object remove(int index)¡¡£ºÉ¾³ýÖ¸¶¨Î»ÖÃÉϵÄÔªËØ ¡¡¡¡Object set(int index, Object element) £ºÓÃÔªËØelementÈ¡´úλÖÃindexÉϵÄÔªËØ£¬²¢ÇÒ·µ»Ø¾ÉµÄÔªËØ ¡¡¡¡(2) List ½Ó¿Ú²»µ«ÒÔλÖÃÐòÁеü´úµÄ±éÀúÕû¸öÁÐ±í£¬»¹ÄÜ´¦Àí¼¯ºÏµÄ×Ó¼¯£º ¡¡¡¡¡¡ListIterator listIterator() : ·µ»ØÒ»¸öÁбíµü´úÆ÷£¬ÓÃÀ´·ÃÎÊÁбíÖеÄÔªËØ ¡¡¡¡¡¡ListIterator listIterator(int index) : ·µ»ØÒ»¸öÁбíµü´úÆ÷£¬ÓÃÀ´´ÓÖ¸¶¨Î»ÖÃindex¿ªÊ¼·ÃÎÊÁбíÖеÄÔªËØ ¡¡¡¡List subList(int fromIndex, int toIndex) £º·µ»Ø´ÓÖ¸¶¨Î»ÖÃfromIndex£¨°üº¬£©µ½toIndex£¨²»°üº¬£©·¶Î§Öи÷¸öÔªËØµÄÁбíÊÓͼ ¡¡¡¡¡°¶Ô×ÓÁбíµÄ¸ü¸Ä£¨Èç add()¡¢remove() ºÍ set() µ÷Ó㩶Եײã List Ò²ÓÐÓ°Ïì¡£¡± ¡¡¡¡2.1.ListIterator½Ó¿Ú ¡¡¡¡ListIterator ½Ó¿Ú¼Ì³Ð Iterator ½Ó¿ÚÒÔÖ§³ÖÌí¼Ó»ò¸ü¸Äµ×²ã¼¯ºÏÖеÄÔªËØ£¬»¹Ö§³ÖË«Ïò·ÃÎÊ¡£ListIteratorûÓе±Ç°Î»Ö㬹â±êλÓÚµ÷ÓÃpreviousºÍnext·½·¨·µ»ØµÄÖµÖ®¼ä¡£Ò»¸ö³¤¶ÈΪnµÄÁÐ±í£¬ÓÐn+1¸öÓÐЧË÷ÒýÖµ£º ¡¡¡¡(1) void add(Object o): ½«¶ÔÏóoÌí¼Óµ½µ±Ç°Î»ÖõÄÇ°Ãæ ¡¡¡¡¡¡void set(Object o): ÓöÔÏóoÌæ´únext»òprevious·½·¨·ÃÎʵÄÉÏÒ»¸öÔªËØ¡£Èç¹ûÉϴε÷ÓúóÁбí½á¹¹±»ÐÞ¸ÄÁË£¬ÄÇô½«Å׳öIllegalStateExceptionÒì³£¡£ ¡¡¡¡(2) boolean hasPrevious(): ÅжÏÏòºóµü´úʱÊÇ·ñÓÐÔªËØ¿É·ÃÎÊ ¡¡¡¡¡¡Object previous()£º·µ»ØÉÏÒ»¸ö¶ÔÏó ¡¡¡¡¡¡int nextIndex(): ·µ»ØÏ´ε÷ÓÃnext·½·¨Ê±½«·µ»ØµÄÔªËØµÄË÷Òý ¡¡¡¡¡¡int previousIndex():¡¡·µ»ØÏ´ε÷ÓÃprevious·½·¨Ê±½«·µ»ØµÄÔªËØµÄË÷Òý ¡¡¡¡¡°Õý³£Çé¿öÏ£¬²»ÓÃListIterator¸Ä±äij´Î±éÀú¼¯ºÏÔªËØµÄ·½Ïò ¡ª Ïòǰ»òÕßÏòºó¡£ËäÈ»ÔÚ¼¼ÊõÉÏ¿ÉÒÔʵÏÖ£¬µ«previous() ºóÁ¢¿Ìµ÷ÓÃnext()£¬·µ»ØµÄÊÇͬһ¸öÔªËØ¡£°Ñµ÷Óà next()ºÍprevious()µÄ˳Ðòµßµ¹Ò»Ï£¬½á¹ûÏàͬ¡£¡± ¡¡¡¡¡°ÎÒÃÇ»¹ÐèÒªÉÔ΢ÔÙ½âÊÍһϠadd() ²Ù×÷¡£Ìí¼ÓÒ»¸öÔªËØ»áµ¼ÖÂÐÂÔªËØÁ¢¿Ì±»Ìí¼Óµ½Òþʽ¹â±êµÄÇ°Ãæ¡£Òò´Ë£¬Ìí¼ÓÔªËØºóµ÷Óà previous() »á·µ»ØÐÂÔªËØ£¬¶øµ÷Óà next() Ôò²»Æð×÷Ó㬷µ»ØÌí¼Ó²Ù×÷֮ǰµÄÏÂÒ»¸öÔªËØ¡£¡± ¡¡¡¡2.2.AbstractListºÍAbstractSequentialList³éÏóÀà ¡¡¡¡ÓÐÁ½¸ö³éÏóµÄ List ʵÏÖÀࣺAbstractList ºÍ AbstractSequentialList¡£Ïñ AbstractSet ÀàÒ»Ñù£¬ËüÃǸ²¸ÇÁË equals() ºÍ hashCode() ·½·¨ÒÔÈ·±£Á½¸öÏàµÈµÄ¼¯ºÏ·µ»ØÏàͬµÄ¹þÏ£Âë¡£ÈôÁ½¸öÁбí´óСÏàµÈÇÒ°üº¬Ë³ÐòÏàͬµÄÏàÍ¬ÔªËØ£¬ÔòÕâÁ½¸öÁбíÏàµÈ¡£ÕâÀïµÄ hashCode() ʵÏÖÔÚ List ½Ó¿Ú¶¨ÒåÖÐÖ¸¶¨£¬¶øÔÚÕâÀïʵÏÖ¡£ ¡¡¡¡³ýÁËequals()ºÍhashCode()£¬AbstractListºÍAbstractSequentialListʵÏÖÁËÆäÓà List ·½·¨µÄÒ»²¿·Ö¡£ÒòΪÊý¾ÝµÄËæ»ú·ÃÎʺÍ˳Ðò·ÃÎÊÊÇ·Ö±ðʵÏֵģ¬Ê¹µÃ¾ßÌåÁбíʵÏֵĴ´½¨¸üΪÈÝÒס£ÐèÒª¶¨ÒåµÄÒ»Ì×·½·¨È¡¾öÓÚÄúÏ£ÍûÖ§³ÖµÄÐÐΪ¡£ÄúÓÀÔ¶²»±ØÇ××ÔÌṩµÄÊÇ iterator·½·¨µÄʵÏÖ¡£ ¡¡¡¡2.3. LinkedListÀàºÍArrayListÀà ¡¡¡¡ÔÚ¡°¼¯ºÏ¿ò¼Ü¡±ÖÐÓÐÁ½ÖÖ³£¹æµÄ List ʵÏÖ£ºArrayList ºÍ LinkedList¡£Ê¹ÓÃÁ½ÖÖ List ʵÏÖµÄÄÄÒ»ÖÖÈ¡¾öÓÚÄúÌØ¶¨µÄÐèÒª¡£Èç¹ûÒªÖ§³ÖËæ»ú·ÃÎÊ£¬¶ø²»±ØÔÚ³ýβ²¿µÄÈκÎλÖòåÈë»ò³ýÈ¥ÔªËØ£¬ÄÇô£¬ArrayList ÌṩÁË¿ÉÑ¡µÄ¼¯ºÏ¡£µ«Èç¹û£¬ÄúҪƵ·±µÄ´ÓÁбíµÄÖмäλÖÃÌí¼ÓºÍ³ýÈ¥ÔªËØ£¬¶øÖ»ÒªË³ÐòµÄ·ÃÎÊÁбíÔªËØ£¬ÄÇô£¬LinkedList ʵÏÖ¸üºÃ¡£ ¡¡¡¡¡°ArrayList ºÍ LinkedList ¶¼ÊµÏÖ Cloneable ½Ó¿Ú£¬¶¼ÌṩÁËÁ½¸ö¹¹Ô캯Êý£¬Ò»¸öÎ޲εģ¬Ò»¸ö½ÓÊÜÁíÒ»¸öCollection¡± ¡¡¡¡2.3.1. LinkedListÀà ¡¡¡¡LinkedListÀàÌí¼ÓÁËһЩ´¦ÀíÁбíÁ½¶ËÔªËØµÄ·½·¨¡£ ¡¡¡¡(1) void addFirst(Object o): ½«¶ÔÏóoÌí¼Óµ½ÁбíµÄ¿ªÍ· ¡¡¡¡¡¡¡¡void addLast(Object o)£º½«¶ÔÏóoÌí¼Óµ½ÁбíµÄ½áβ ¡¡¡¡(2) Object getFirst(): ·µ»ØÁÐ±í¿ªÍ·µÄÔªËØ ¡¡¡¡¡¡¡¡Object getLast(): ·µ»ØÁбí½áβµÄÔªËØ ¡¡¡¡(3) Object removeFirst(): ɾ³ý²¢ÇÒ·µ»ØÁÐ±í¿ªÍ·µÄÔªËØ ¡¡¡¡¡¡¡¡Object removeLast():ɾ³ý²¢ÇÒ·µ»ØÁбí½áβµÄÔªËØ ¡¡¡¡(4) LinkedList(): ¹¹½¨Ò»¸ö¿ÕµÄÁ´½ÓÁÐ±í ¡¡¡¡¡¡¡¡LinkedList(Collection c): ¹¹½¨Ò»¸öÁ´½ÓÁÐ±í£¬²¢ÇÒÌí¼Ó¼¯ºÏcµÄËùÓÐÔªËØ ¡¡¡¡¡°Ê¹ÓÃÕâЩз½·¨£¬Äú¾Í¿ÉÒÔÇáËÉµÄ°Ñ LinkedList µ±×÷Ò»¸ö¶ÑÕ»¡¢¶ÓÁлòÆäËüÃæÏò¶ËµãµÄÊý¾Ý½á¹¹¡£¡± ¡¡¡¡2.3.2. ArrayListÀà ¡¡¡¡ArrayListÀà·â×°ÁËÒ»¸ö¶¯Ì¬ÔÙ·ÖÅäµÄObject[]Êý×顣ÿ¸öArrayList¶ÔÏóÓÐÒ»¸öcapacity¡£Õâ¸öcapacity±íʾ´æ´¢ÁбíÖÐÔªËØµÄÊý×éµÄÈÝÁ¿¡£µ±ÔªËØÌí¼Óµ½ArrayListʱ£¬ËüµÄcapacityÔÚ³£Á¿Ê±¼äÄÚ×Ô¶¯Ôö¼Ó¡£ ¡¡¡¡ÔÚÏòÒ»¸öArrayList¶ÔÏóÌí¼Ó´óÁ¿ÔªËصijÌÐòÖУ¬¿ÉʹÓÃensureCapacity·½·¨Ôö¼Ócapacity¡£Õâ¿ÉÒÔ¼õÉÙÔö¼ÓÖØ·ÖÅäµÄÊýÁ¿¡£ ¡¡¡¡(1) void ensureCapacity(int minCapacity): ½«ArrayList¶ÔÏóÈÝÁ¿Ôö¼ÓminCapacity ¡¡¡¡(2) void trimToSize(): ÕûÀíArrayList¶ÔÏóÈÝÁ¿ÎªÁÐ±íµ±Ç°´óС¡£³ÌÐò¿ÉʹÓÃÕâ¸ö²Ù×÷¼õÉÙArrayList¶ÔÏó´æ´¢¿Õ¼ä¡£ ¡¡¡¡2.3.2.1. RandomAccess½Ó¿Ú ¡¡¡¡Ò»¸öÌØÕ÷½Ó¿Ú¡£¸Ã½Ó¿ÚûÓÐÈκη½·¨£¬²»¹ýÄã¿ÉÒÔʹÓøýӿÚÀ´²âÊÔij¸ö¼¯ºÏÊÇ·ñÖ§³ÖÓÐЧµÄËæ»ú·ÃÎÊ¡£ArrayListºÍVectorÀàÓÃÓÚʵÏָýӿڡ£ 3.Set½Ó¿Ú ¡¡¡¡Set ½Ó¿Ú¼Ì³Ð Collection ½Ó¿Ú£¬¶øÇÒËü²»ÔÊÐí¼¯ºÏÖдæÔÚÖØ¸´Ïÿ¸ö¾ßÌåµÄ Set ʵÏÖÀàÒÀÀµÌí¼ÓµÄ¶ÔÏóµÄ equals()·½·¨À´¼ì²é¶ÀÒ»ÐÔ¡£Set½Ó¿ÚûÓÐÒýÈëз½·¨£¬ËùÒÔSet¾ÍÊÇÒ»¸öCollection£¬Ö»²»¹ýÆäÐÐΪ²»Í¬¡£ ¡¡¡¡3.1. Hash±í ¡¡¡¡Hash±íÊÇÒ»ÖÖÊý¾Ý½á¹¹£¬ÓÃÀ´²éÕÒ¶ÔÏó¡£Hash±íΪÿ¸ö¶ÔÏó¼ÆËã³öÒ»¸öÕûÊý£¬³ÆÎªHash Code(¹þÏ£Âë)¡£Hash±íÊǸöÁ´½ÓʽÁбíµÄÕóÁС£Ã¿¸öÁÐ±í³ÆÎªÒ»¸öbuckets(¹þÏ£±íÔª)¡£¶ÔÏóλÖõļÆËã¡¡index = HashCode % buckets (HashCodeΪ¶ÔÏó¹þÏ£Â룬bucketsΪ¹þÏ£±íÔª×ÜÊý)¡£ ¡¡¡¡µ±ÄãÌí¼ÓÔªËØÊ±£¬ÓÐʱÄã»áÓöµ½ÒѾ­Ìî³äÁËÔªËØµÄ¹þÏ£±íÔª£¬ÕâÖÖÇé¿ö³ÆÎªHash Collisions(¹þÏ£³åÍ»)¡£Õâʱ£¬Äã±ØÐëÅжϸÃÔªËØÊÇ·ñÒѾ­´æÔÚÓڸùþÏ£±íÖС£ ¡¡¡¡Èç¹û¹þÏ£ÂëÊǺÏÀíµØËæ»ú·Ö²¼µÄ£¬²¢ÇÒ¹þÏ£±íÔªµÄÊýÁ¿×ã¹»´ó£¬ÄÇô¹þÏ£³åÍ»µÄÊýÁ¿¾Í»á¼õÉÙ¡£Í¬Ê±£¬ÄãÒ²¿ÉÒÔͨ¹ýÉ趨һ¸ö³õʼµÄ¹þÏ£±íÔªÊýÁ¿À´¸üºÃµØ¿ØÖƹþÏ£±íµÄÔËÐС£³õʼ¹þÏ£±íÔªµÄÊýÁ¿Îª¡¡buckets = size * 150% + 1 (sizeΪԤÆÚÔªËØµÄÊýÁ¿)¡£ ¡¡¡¡Èç¹û¹þÏ£±íÖеÄÔªËØ·ÅµÃÌ«Âú£¬¾Í±ØÐë½øÐÐrehashing(ÔÙ¹þÏ£)¡£ÔÙ¹þϣʹ¹þÏ£±íÔªÊýÔö±¶£¬²¢½«Ô­ÓеĶÔÏóÖØÐµ¼ÈëеĹþÏ£±íÔªÖУ¬¶øÔ­Ê¼µÄ¹þÏ£±íÔª±»É¾³ý¡£load factor(¼ÓÔØÒò×Ó)¾ö¶¨ºÎʱҪ¶Ô¹þÏ£±í½øÐÐÔÙ¹þÏ£¡£ÔÚJava±à³ÌÓïÑÔÖУ¬¼ÓÔØÒò×ÓĬÈÏֵΪ0.75£¬Ä¬ÈϹþÏ£±íԪΪ101¡£ ¡¡¡¡3.2. Comparable½Ó¿ÚºÍComparator½Ó¿Ú ¡¡¡¡ÔÚ¡°¼¯ºÏ¿ò¼Ü¡±ÖÐÓÐÁ½ÖֱȽϽӿڣºComparable½Ó¿ÚºÍComparator½Ó¿Ú¡£ÏñStringºÍIntegerµÈJavaÄÚ½¨ÀàʵÏÖComparable½Ó¿ÚÒÔÌṩһ¶¨ÅÅÐò·½Ê½£¬µ«ÕâÑùÖ»ÄÜʵÏָýӿÚÒ»´Î¡£¶ÔÓÚÄÇЩûÓÐʵÏÖComparable½Ó¿ÚµÄÀà¡¢»òÕß×Ô¶¨ÒåµÄÀ࣬Äú¿ÉÒÔͨ¹ýComparator½Ó¿ÚÀ´¶¨ÒåÄú×Ô¼ºµÄ±È½Ï·½Ê½¡£ ¡¡¡¡3.2.1. Comparable½Ó¿Ú ¡¡¡¡ÔÚjava.lang°üÖУ¬Comparable½Ó¿ÚÊÊÓÃÓÚÒ»¸öÀàÓÐ×ÔȻ˳ÐòµÄʱºò¡£¼Ù¶¨¶ÔÏ󼯺ÏÊÇͬһÀàÐÍ£¬¸Ã½Ó¿ÚÔÊÐíÄú°Ñ¼¯ºÏÅÅÐò³É×ÔȻ˳Ðò¡£ ¡¡¡¡(1) int compareTo(Object o): ±È½Ïµ±Ç°ÊµÀý¶ÔÏóÓë¶ÔÏóo£¬Èç¹ûλÓÚ¶ÔÏóo֮ǰ£¬·µ»Ø¸ºÖµ£¬Èç¹ûÁ½¸ö¶ÔÏóÔÚÅÅÐòÖÐλÖÃÏàͬ£¬Ôò·µ»Ø0£¬Èç¹ûλÓÚ¶ÔÏóoºóÃæ£¬Ôò·µ»ØÕýÖµ ¡¡¡¡ÔÚ Java 2 SDK°æ±¾1.4ÖÐÓжþÊ®ËĸöÀàʵÏÖComparable½Ó¿Ú¡£Ï±íչʾÁË8ÖÖ»ù±¾ÀàÐ͵Ä×ÔÈ»ÅÅÐò¡£ËäȻһЩÀ๲ÏíͬһÖÖ×ÔÈ»ÅÅÐò£¬µ«Ö»ÓÐÏ໥¿É±ÈµÄÀà²ÅÄÜÅÅÐò¡£ Àà ÅÅÐò BigDecimal,BigInteger,Byte, Double, Float,Integer,Long,Short °´Êý×Ö´óСÅÅÐò Character °´ Unicode ÖµµÄÊý×Ö´óСÅÅÐò String °´×Ö·û´®ÖÐ×Ö·û Unicode ÖµÅÅÐò ¡¡¡¡ ¡¡¡¡ÀûÓÃComparable½Ó¿Ú´´½¨Äú×Ô¼ºµÄÀàµÄÅÅÐò˳Ðò£¬Ö»ÊÇʵÏÖcompareTo()·½·¨µÄÎÊÌ⡣ͨ³£¾ÍÊÇÒÀÀµ¼¸¸öÊý¾Ý³ÉÔ±µÄ×ÔÈ»ÅÅÐò¡£Í¬Ê±ÀàÒ²Ó¦¸Ã¸²¸Çequals()ºÍhashCode()ÒÔÈ·±£Á½¸öÏàµÈµÄ¶ÔÏó·µ»ØÍ¬Ò»¸ö¹þÏ£Âë¡£ ¡¡¡¡3.2.2. Comparator½Ó¿Ú ¡¡¡¡ÈôÒ»¸öÀ಻ÄÜÓÃÓÚʵÏÖjava.lang.Comparable£¬»òÕßÄú²»Ï²»¶È±Ê¡µÄComparableÐÐΪ²¢ÏëÌṩ×Ô¼ºµÄÅÅÐò˳Ðò(¿ÉÄܶàÖÖÅÅÐò·½Ê½)£¬Äã¿ÉÒÔʵÏÖComparator½Ó¿Ú£¬´Ó¶ø¶¨ÒåÒ»¸ö±È½ÏÆ÷¡£ ¡¡¡¡(1)int compare(Object o1, Object o2): ¶ÔÁ½¸ö¶ÔÏóo1ºÍo2½øÐбȽϣ¬Èç¹ûo1λÓÚo2µÄÇ°Ãæ£¬Ôò·µ»Ø¸ºÖµ£¬Èç¹ûÔÚÅÅÐò˳ÐòÖÐÈÏΪo1ºÍo2ÊÇÏàͬµÄ£¬·µ»Ø0£¬Èç¹ûo1λÓÚo2µÄºóÃæ£¬Ôò·µ»ØÕýÖµ ¡¡¡¡¡°ÓëComparableÏàËÆ£¬0·µ»ØÖµ²»±íÊ¾ÔªËØÏàµÈ¡£Ò»¸ö0·µ»ØÖµÖ»ÊDZíʾÁ½¸ö¶ÔÏóÅÅÔÚͬһλÖá£ÓÉComparatorÓû§¾ö¶¨ÈçºÎ´¦Àí¡£Èç¹ûÁ½¸ö²»ÏàµÈµÄÔªËØ±È½ÏµÄ½á¹ûΪÁ㣬ÄúÊ×ÏÈÓ¦¸ÃÈ·ÐÅÄǾÍÊÇÄúÒªµÄ½á¹û£¬È»ºó¼Ç¼ÐÐΪ¡£¡± ¡¡¡¡(2)boolean equals(Object obj): ָʾ¶ÔÏóobjÊÇ·ñºÍ±È½ÏÆ÷ÏàµÈ¡£ ¡¡¡¡¡°¸Ã·½·¨¸²Ð´ObjectµÄequals()·½·¨£¬¼ì²éµÄÊÇComparatorʵÏֵĵÈͬÐÔ£¬²»ÊÇ´¦ÓڱȽÏ״̬ϵĶÔÏ󡣡± ¡¡¡¡3.3. SortedSet½Ó¿Ú ¡¡¡¡¡°¼¯ºÏ¿ò¼Ü¡±ÌṩÁ˸öÌØÊâµÄSet½Ó¿Ú£ºSortedSet£¬Ëü±£³ÖÔªËØµÄÓÐÐò˳Ðò¡£SortedSet½Ó¿ÚΪ¼¯µÄÊÓͼ(×Ó¼¯)ºÍËüµÄÁ½¶Ë£¨¼´Í·ºÍ⣩ÌṩÁË·ÃÎÊ·½·¨¡£µ±Äú´¦ÀíÁбíµÄ×Ó¼¯Ê±£¬¸ü¸ÄÊÓͼ»á·´Ó³µ½Ô´¼¯¡£´ËÍ⣬¸ü¸ÄÔ´¼¯Ò²»á·´Ó³ÔÚ×Ó¼¯ÉÏ¡£·¢ÉúÕâÖÖÇé¿öµÄÔ­ÒòÔÚÓÚÊÓͼÓÉÁ½¶ËµÄÔªËØ¶ø²»ÊÇϱêÔªËØÖ¸¶¨£¬ËùÒÔÈç¹ûÄúÏëÒªÒ»¸öÌØÊâµÄ¸ß¶ËÔªËØ£¨toElement£©ÔÚ×Ó¼¯ÖУ¬Äú±ØÐëÕÒµ½ÏÂÒ»¸öÔªËØ¡£ ¡¡¡¡Ìí¼Óµ½SortedSetʵÏÖÀàµÄÔªËØ±ØÐëʵÏÖComparable½Ó¿Ú£¬·ñÔòÄú±ØÐë¸øËüµÄ¹¹Ô캯ÊýÌṩһ¸öComparator½Ó¿ÚµÄʵÏÖ¡£TreeSetÀàÊÇËüµÄΨһһ·ÝʵÏÖ¡£ ¡¡¡¡¡°ÒòΪ¼¯±ØÐë°üº¬Î¨Ò»µÄÏÈç¹ûÌí¼ÓÔªËØÊ±±È½ÏÁ½¸öÔªËØµ¼ÖÂÁË0·µ»ØÖµ£¨Í¨¹ýComparableµÄcompareTo()·½·¨»òComparatorµÄcompare()·½·¨£©£¬ÄÇôÐÂÔªËØ¾ÍûÓÐÌí¼Ó½øÈ¥¡£Èç¹ûÁ½¸öÔªËØÏàµÈ£¬ÄÇ»¹ºÃ¡£µ«Èç¹ûËüÃDz»ÏàµÈµÄ»°£¬Äú½ÓÏÂÀ´¾ÍÓ¦¸ÃÐ޸ıȽϷ½·¨£¬ÈñȽϷ½·¨ºÍ equals() µÄЧ¹ûÒ»Ö¡£¡± ¡¡¡¡(1) Comparator comparator(): ·µ»Ø¶ÔÔªËØ½øÐÐÅÅÐòʱʹÓÃµÄ±È½ÏÆ÷£¬Èç¹ûʹÓÃComparable½Ó¿ÚµÄcompareTo()·½·¨¶ÔÔªËØ½øÐбȽϣ¬Ôò·µ»Ønull ¡¡¡¡(2) Object first(): ·µ»ØÓÐÐò¼¯ºÏÖеÚÒ»¸ö(×îµÍ)ÔªËØ ¡¡¡¡(3) Object last(): ·µ»ØÓÐÐò¼¯ºÏÖÐ×îºóÒ»¸ö(×î¸ß)ÔªËØ ¡¡¡¡(4) SortedSet subSet(Object fromElement, Object toElement): ·µ»Ø´ÓfromElement(°üÀ¨)ÖÁtoElement(²»°üÀ¨)·¶Î§ÄÚÔªËØµÄSortedSetÊÓͼ(×Ó¼¯) ¡¡¡¡(5) SortedSet headSet(Object toElement): ·µ»ØSortedSetµÄÒ»¸öÊÓͼ£¬ÆäÄÚ¸÷ÔªËØ½ÔСÓÚtoElement ¡¡¡¡(6) SortedSet tailSet(Object fromElement): ·µ»ØSortedSetµÄÒ»¸öÊÓͼ£¬ÆäÄÚ¸÷ÔªËØ½Ô´óÓÚ»òµÈÓÚfromElement ¡¡¡¡3.4. AbstractSet³éÏóÀà ¡¡¡¡AbstractSetÀา¸ÇÁËObjectÀàµÄequals()ºÍhashCode()·½·¨£¬ÒÔÈ·±£Á½¸öÏàµÈµÄ¼¯·µ»ØÏàͬµÄ¹þÏ£Âë¡£ÈôÁ½¸ö¼¯´óСÏàµÈÇÒ°üº¬ÏàÍ¬ÔªËØ£¬ÔòÕâÁ½¸ö¼¯ÏàµÈ¡£°´¶¨Ò壬¼¯µÄ¹þÏ£ÂëÊǼ¯ÖÐÔªËØ¹þÏ£ÂëµÄ×ܺ͡£Òò´Ë£¬²»ÂÛ¼¯µÄÄÚ²¿Ë³ÐòÈçºÎ£¬Á½¸öÏàµÈµÄ¼¯»áÓÐÏàͬµÄ¹þÏ£Âë¡£ ¡¡¡¡3.4.1. ObjectÀà ¡¡¡¡(1) boolean equals(Object obj): ¶ÔÁ½¸ö¶ÔÏó½øÐбȽϣ¬ÒÔ±ãÈ·¶¨ËüÃÇÊÇ·ñÏàͬ ¡¡¡¡(2) int hashCode(): ·µ»Ø¸Ã¶ÔÏóµÄ¹þÏ£Âë¡£ÏàͬµÄ¶ÔÏó±ØÐë·µ»ØÏàͬµÄ¹þÏ£Âë ¡¡¡¡3.5. HashSetÀàÀàºÍTreeSetÀà ¡¡¡¡¡°¼¯ºÏ¿ò¼Ü¡±Ö§³ÖSet½Ó¿ÚÁ½ÖÖÆÕͨµÄʵÏÖ£ºHashSetºÍTreeSet(TreeSetʵÏÖSortedSet½Ó¿Ú)¡£ÔÚ¸ü¶àÇé¿öÏ£¬Äú»áʹÓà HashSet ´æ´¢Öظ´×ÔÓɵļ¯ºÏ¡£¿¼Âǵ½Ð§ÂÊ£¬Ìí¼Óµ½ HashSet µÄ¶ÔÏóÐèÒª²ÉÓÃÇ¡µ±·ÖÅä¹þÏ£ÂëµÄ·½Ê½À´ÊµÏÖhashCode()·½·¨¡£ËäÈ»´ó¶àÊýϵͳÀา¸ÇÁË ObjectÖÐȱʡµÄhashCode()ºÍequals()ʵÏÖ£¬µ«´´½¨Äú×Ô¼ºµÄÒªÌí¼Óµ½HashSetµÄÀàʱ£¬±ðÍüÁ˸²¸Ç hashCode()ºÍequals()¡£ ¡¡¡¡µ±ÄúÒª´Ó¼¯ºÏÖÐÒÔÓÐÐòµÄ·½Ê½²åÈëºÍ³éÈ¡ÔªËØÊ±£¬TreeSetʵÏÖ»áÓÐÓô¦¡£ÎªÁËÄÜ˳Àû½øÐУ¬Ìí¼Óµ½TreeSetµÄÔªËØ±ØÐëÊÇ¿ÉÅÅÐòµÄ¡£ ¡¡¡¡3.5.1.HashSetÀà ¡¡¡¡(1) HashSet(): ¹¹½¨Ò»¸ö¿ÕµÄ¹þÏ£¼¯ ¡¡¡¡(2) HashSet(Collection c): ¹¹½¨Ò»¸ö¹þÏ£¼¯£¬²¢ÇÒÌí¼Ó¼¯ºÏcÖÐËùÓÐÔªËØ ¡¡¡¡(3) HashSet(int initialCapacity): ¹¹½¨Ò»¸öÓµÓÐÌØ¶¨ÈÝÁ¿µÄ¿Õ¹þÏ£¼¯ ¡¡¡¡(4) HashSet(int initialCapacity, float loadFactor): ¹¹½¨Ò»¸öÓµÓÐÌØ¶¨ÈÝÁ¿ºÍ¼ÓÔØÒò×ӵĿչþÏ£¼¯¡£LoadFactorÊÇ0.0ÖÁ1.0Ö®¼äµÄÒ»¸öÊý ¡¡¡¡3.5.2. TreeSetÀà ¡¡¡¡(1) TreeSet():¹¹½¨Ò»¸ö¿ÕµÄÊ÷¼¯ ¡¡¡¡(2) TreeSet(Collection c): ¹¹½¨Ò»¸öÊ÷¼¯£¬²¢ÇÒÌí¼Ó¼¯ºÏcÖÐËùÓÐÔªËØ ¡¡¡¡(3) TreeSet(Comparator c): ¹¹½¨Ò»¸öÊ÷¼¯£¬²¢ÇÒʹÓÃÌØ¶¨µÄ±È½ÏÆ÷¶ÔÆäÔªËØ½øÐÐÅÅÐò ¡¡¡¡¡°comparator±È½ÏÆ÷ûÓÐÈκÎÊý¾Ý£¬ËüÖ»ÊDZȽϷ½·¨µÄ´æ·ÅÆ÷¡£ÕâÖÖ¶ÔÏóÓÐʱ³ÆÎªº¯Êý¶ÔÏ󡣺¯Êý¶ÔÏóͨ³£ÔÚ¡°ÔËÐйý³ÌÖС±±»¶¨ÒåΪÄäÃûÄÚ²¿ÀàµÄÒ»¸öʵÀý¡£¡± ¡¡¡¡TreeSet(SortedSet s): ¹¹½¨Ò»¸öÊ÷¼¯£¬Ìí¼ÓÓÐÐò¼¯ºÏsÖÐËùÓÐÔªËØ£¬²¢ÇÒʹÓÃÓëÓÐÐò¼¯ºÏsÏàͬµÄ±È½ÏÆ÷ÅÅÐò ¡¡¡¡3.6. LinkedHashSetÀà ¡¡¡¡LinkedHashSetÀ©Õ¹HashSet¡£Èç¹ûÏë¸ú×ÙÌí¼Ó¸øHashSetµÄÔªËØµÄ˳Ðò£¬LinkedHashSetʵÏÖ»áÓаïÖú¡£LinkedHashSetµÄµü´úÆ÷°´ÕÕÔªËØµÄ²åÈë˳ÐòÀ´·ÃÎʸ÷¸öÔªËØ¡£ËüÌṩÁËÒ»¸ö¿ÉÒÔ¿ìËÙ·ÃÎʸ÷¸öÔªËØµÄÓÐÐò¼¯ºÏ¡£Í¬Ê±£¬ËüÒ²Ôö¼ÓÁËʵÏֵĴú¼Û£¬ÒòΪ¹þÏ£±íÔªÖеĸ÷¸öÔªËØÊÇͨ¹ýË«ÖØÁ´½ÓʽÁбíÁ´½ÓÔÚÒ»ÆðµÄ¡£ ¡¡¡¡(1) LinkedHashSet(): ¹¹½¨Ò»¸ö¿ÕµÄÁ´½Óʽ¹þÏ£¼¯ ¡¡¡¡(2) LinkedHashSet(Collection c): ¹¹½¨Ò»¸öÁ´½Óʽ¹þÏ£¼¯£¬²¢ÇÒÌí¼Ó¼¯ºÏcÖÐËùÓÐÔªËØ ¡¡¡¡(3) LinkedHashSet(int initialCapacity): ¹¹½¨Ò»¸öÓµÓÐÌØ¶¨ÈÝÁ¿µÄ¿ÕÁ´½Óʽ¹þÏ£¼¯ ¡¡¡¡(4) LinkedHashSet(int initialCapacity, float loadFactor): ¹¹½¨Ò»¸öÓµÓÐÌØ¶¨ÈÝÁ¿ºÍ¼ÓÔØÒò×ӵĿÕÁ´½Óʽ¹þÏ£¼¯¡£LoadFactorÊÇ0.0ÖÁ1.0Ö®¼äµÄÒ»¸öÊý ¡¡¡¡¡°ÎªÓÅ»¯HashSet¿Õ¼äµÄʹÓã¬Äú¿ÉÒÔµ÷ÓųõʼÈÝÁ¿ºÍ¸ºÔØÒò×Ó¡£TreeSet²»°üº¬µ÷ÓÅÑ¡ÏÒòΪÊ÷×ÜÊÇÆ½ºâµÄ¡£¡± ¡¡¡¡4. Map½Ó¿Ú ¡¡¡¡Map½Ó¿Ú²»ÊÇCollection½Ó¿ÚµÄ¼Ì³Ð¡£Map½Ó¿ÚÓÃÓÚά»¤¼ü/Öµ¶Ô(key/value pairs)¡£¸Ã½Ó¿ÚÃèÊöÁË´Ó²»Öظ´µÄ¼üµ½ÖµµÄÓ³Éä¡£ ¡¡¡¡(1) Ìí¼Ó¡¢É¾³ý²Ù×÷£º ¡¡¡¡Object put(Object key, Object value): ½«»¥Ïà¹ØÁªµÄÒ»¸ö¹Ø¼ü×ÖÓëÒ»¸öÖµ·ÅÈë¸ÃÓ³Ïñ¡£Èç¹û¸Ã¹Ø¼ü×ÖÒѾ­´æÔÚ£¬ÄÇôÓë´Ë¹Ø¼ü×ÖÏà¹ØµÄÐÂÖµ½«È¡´ú¾ÉÖµ¡£·½·¨·µ»Ø¹Ø¼ü×ֵľÉÖµ£¬Èç¹û¹Ø¼ü×ÖÔ­ÏȲ¢²»´æÔÚ£¬Ôò·µ»Ønull ¡¡¡¡Object remove(Object key): ´ÓÓ³ÏñÖÐɾ³ýÓëkeyÏà¹ØµÄÓ³Éä ¡¡¡¡void putAll(Map t): ½«À´×ÔÌØ¶¨Ó³ÏñµÄËùÓÐÔªËØÌí¼Ó¸ø¸ÃÓ³Ïñ ¡¡¡¡void clear(): ´ÓÓ³ÏñÖÐɾ³ýËùÓÐÓ³Éä ¡¡¡¡¡°¼üºÍÖµ¶¼¿ÉÒÔΪnull¡£µ«ÊÇ£¬Äú²»ÄܰÑMap×÷Ϊһ¸ö¼ü»òÖµÌí¼Ó¸ø×ÔÉí¡£¡± ¡¡¡¡(2) ²éѯ²Ù×÷£º ¡¡¡¡Object get(Object key): »ñµÃÓë¹Ø¼ü×ÖkeyÏà¹ØµÄÖµ£¬²¢ÇÒ·µ»ØÓë¹Ø¼ü×ÖkeyÏà¹ØµÄ¶ÔÏó£¬Èç¹ûûÓÐÔÚ¸ÃÓ³ÏñÖÐÕÒµ½¸Ã¹Ø¼ü×Ö£¬Ôò·µ»Ønull ¡¡¡¡boolean containsKey(Object key): ÅжÏÓ³ÏñÖÐÊÇ·ñ´æÔڹؼü×Ökey ¡¡¡¡boolean containsValue(Object value): ÅжÏÓ³ÏñÖÐÊÇ·ñ´æÔÚÖµvalue ¡¡¡¡int size(): ·µ»Øµ±Ç°Ó³ÏñÖÐÓ³ÉäµÄÊýÁ¿ ¡¡¡¡boolean isEmpty() £ºÅжÏÓ³ÏñÖÐÊÇ·ñÓÐÈκÎÓ³Éä ¡¡¡¡(3) ÊÓͼ²Ù×÷ £º´¦ÀíÓ³ÏñÖмü/Öµ¶Ô×é ¡¡¡¡Set keySet(): ·µ»ØÓ³ÏñÖÐËùÓйؼü×ÖµÄÊÓͼ¼¯ ¡¡¡¡¡°ÒòΪӳÉäÖмüµÄ¼¯ºÏ±ØÐëÊÇΨһµÄ£¬ÄúÓÃSetÖ§³Ö¡£Ä㻹¿ÉÒÔ´ÓÊÓͼÖÐɾ³ýÔªËØ£¬Í¬Ê±£¬¹Ø¼ü×ÖºÍËüÏà¹ØµÄÖµ½«´ÓÔ´Ó³ÏñÖб»É¾³ý£¬µ«ÊÇÄã²»ÄÜÌí¼ÓÈκÎÔªËØ¡£¡± ¡¡¡¡Collection values():·µ»ØÓ³ÏñÖÐËùÓÐÖµµÄÊÓͼ¼¯ ¡¡¡¡¡°ÒòΪӳÉäÖÐÖµµÄ¼¯ºÏ²»ÊÇΨһµÄ£¬ÄúÓÃCollectionÖ§³Ö¡£Ä㻹¿ÉÒÔ´ÓÊÓͼÖÐɾ³ýÔªËØ£¬Í¬Ê±£¬ÖµºÍËüµÄ¹Ø¼ü×Ö½«´ÓÔ´Ó³ÏñÖб»É¾³ý£¬µ«ÊÇÄã²»ÄÜÌí¼ÓÈκÎÔªËØ¡£¡± ¡¡¡¡Set entrySet(): ·µ»ØMap.Entry¶ÔÏóµÄÊÓͼ¼¯£¬¼´Ó³ÏñÖеĹؼü×Ö/Öµ¶Ô ¡¡¡¡¡°ÒòΪӳÉäÊÇΨһµÄ£¬ÄúÓÃSetÖ§³Ö¡£Ä㻹¿ÉÒÔ´ÓÊÓͼÖÐɾ³ýÔªËØ£¬Í¬Ê±£¬ÕâÐ©ÔªËØ½«´ÓÔ´Ó³ÏñÖб»É¾³ý£¬µ«ÊÇÄã²»ÄÜÌí¼ÓÈκÎÔªËØ¡£¡± ¡¡¡¡4.1. Map.Entry½Ó¿Ú ¡¡¡¡MapµÄentrySet()·½·¨·µ»ØÒ»¸öʵÏÖMap.Entry½Ó¿ÚµÄ¶ÔÏ󼯺ϡ£¼¯ºÏÖÐÿ¸ö¶ÔÏó¶¼ÊǵײãMapÖÐÒ»¸öÌØ¶¨µÄ¼ü/Öµ¶Ô¡£ ¡¡¡¡Í¨¹ýÕâ¸ö¼¯ºÏµÄµü´úÆ÷£¬Äú¿ÉÒÔ»ñµÃÿһ¸öÌõÄ¿(Ψһ»ñÈ¡·½Ê½)µÄ¼ü»òÖµ²¢¶ÔÖµ½øÐиü¸Ä¡£µ±ÌõĿͨ¹ýµü´úÆ÷·µ»Øºó£¬³ý·ÇÊǵü´úÆ÷×ÔÉíµÄremove()·½·¨»òÕßµü´úÆ÷·µ»ØµÄÌõÄ¿µÄsetValue()·½·¨£¬ÆäÓà¶ÔÔ´MapÍⲿµÄÐ޸ͼ»áµ¼Ö´ËÌõÄ¿¼¯±äµÃÎÞЧ£¬Í¬Ê±²úÉúÌõÄ¿ÐÐΪ䶨Òå¡£ ¡¡¡¡(1) Object getKey(): ·µ»ØÌõÄ¿µÄ¹Ø¼ü×Ö ¡¡¡¡(2) Object getValue(): ·µ»ØÌõÄ¿µÄÖµ ¡¡¡¡(3) Object setValue(Object value): ½«Ïà¹ØÓ³ÏñÖеÄÖµ¸ÄΪvalue£¬²¢ÇÒ·µ»Ø¾ÉÖµ ¡¡¡¡4.2. SortedMap½Ó¿Ú ¡¡¡¡¡°¼¯ºÏ¿ò¼Ü¡±ÌṩÁ˸öÌØÊâµÄMap½Ó¿Ú£ºSortedMap£¬ËüÓÃÀ´±£³Ö¼üµÄÓÐÐò˳Ðò¡£ ¡¡¡¡SortedMap½Ó¿ÚΪӳÏñµÄÊÓͼ(×Ó¼¯)£¬°üÀ¨Á½¸ö¶ËµãÌṩÁË·ÃÎÊ·½·¨¡£³ýÁËÅÅÐòÊÇ×÷ÓÃÓÚÓ³ÉäµÄ¼üÒÔÍ⣬´¦ÀíSortedMapºÍ´¦ÀíSortedSetÒ»Ñù¡£ ¡¡¡¡Ìí¼Óµ½SortedMapʵÏÖÀàµÄÔªËØ±ØÐëʵÏÖComparable½Ó¿Ú£¬·ñÔòÄú±ØÐë¸øËüµÄ¹¹Ô캯ÊýÌṩһ¸öComparator½Ó¿ÚµÄʵÏÖ¡£TreeMapÀàÊÇËüµÄΨһһ·ÝʵÏÖ¡£ ¡¡¡¡¡°ÒòΪ¶ÔÓÚÓ³ÉäÀ´Ëµ£¬Ã¿¸ö¼üÖ»ÄܶÔÓ¦Ò»¸öÖµ£¬Èç¹ûÔÚÌí¼ÓÒ»¸ö¼ü/Öµ¶Ôʱ±È½ÏÁ½¸ö¼ü²úÉúÁË0·µ»ØÖµ£¨Í¨¹ýComparableµÄcompareTo()·½·¨»òͨ¹ýComparatorµÄcompare()·½·¨£©£¬ÄÇô£¬Ô­Ê¼¼ü¶ÔÓ¦Öµ±»ÐµÄÖµÌæ´ú¡£Èç¹ûÁ½¸öÔªËØÏàµÈ£¬ÄÇ»¹ºÃ¡£µ«Èç¹û²»ÏàµÈ£¬ÄÇôÄú¾ÍÓ¦¸ÃÐ޸ıȽϷ½·¨£¬ÈñȽϷ½·¨ºÍ equals() µÄЧ¹ûÒ»Ö¡£¡± ¡¡¡¡(1) Comparator comparator(): ·µ»Ø¶Ô¹Ø¼ü×Ö½øÐÐÅÅÐòʱʹÓÃµÄ±È½ÏÆ÷£¬Èç¹ûʹÓÃComparable½Ó¿ÚµÄcompareTo()·½·¨¶Ô¹Ø¼ü×Ö½øÐбȽϣ¬Ôò·µ»Ønull ¡¡¡¡(2) Object firstKey(): ·µ»ØÓ³ÏñÖеÚÒ»¸ö(×îµÍ)¹Ø¼ü×Ö ¡¡¡¡(3) Object lastKey(): ·µ»ØÓ³ÏñÖÐ×îºóÒ»¸ö(×î¸ß)¹Ø¼ü×Ö ¡¡¡¡(4) SortedMap subMap(Object fromKey, Object toKey): ·µ»Ø´ÓfromKey(°üÀ¨)ÖÁtoKey(²»°üÀ¨)·¶Î§ÄÚÔªËØµÄSortedMapÊÓͼ(×Ó¼¯) ¡¡¡¡(5) SortedMap headMap(Object toKey): ·µ»ØSortedMapµÄÒ»¸öÊÓͼ£¬ÆäÄÚ¸÷ÔªËØµÄkey½ÔСÓÚtoKey ¡¡¡¡(6) SortedSet tailMap(Object fromKey): ·µ»ØSortedMapµÄÒ»¸öÊÓͼ£¬ÆäÄÚ¸÷ÔªËØµÄkey½Ô´óÓÚ»òµÈÓÚfromKey ¡¡¡¡4.3. AbstractMap³éÏóÀà ¡¡¡¡ºÍÆäËü³éÏ󼯺ÏʵÏÖÏàËÆ£¬AbstractMap Àา¸ÇÁËequals()ºÍhashCode()·½·¨ÒÔÈ·±£Á½¸öÏàµÈÓ³Éä·µ»ØÏàͬµÄ¹þÏ£Âë¡£Èç¹ûÁ½¸öÓ³Éä´óСÏàµÈ¡¢°üº¬Í¬ÑùµÄ¼üÇÒÿ¸ö¼üÔÚÕâÁ½¸öÓ³ÉäÖжÔÓ¦µÄÖµ¶¼Ïàͬ£¬ÔòÕâÁ½¸öÓ³ÉäÏàµÈ¡£Ó³ÉäµÄ¹þÏ£ÂëÊÇÓ³ÉäÔªËØ¹þÏ£ÂëµÄ×ܺͣ¬ÆäÖÐÿ¸öÔªËØÊÇMap.Entry½Ó¿ÚµÄÒ»¸öʵÏÖ¡£Òò´Ë£¬²»ÂÛÓ³ÉäÄÚ²¿Ë³ÐòÈçºÎ£¬Á½¸öÏàµÈÓ³Éä»á±¨¸æÏàͬµÄ¹þÏ£Âë¡£ ¡¡¡¡4.4. HashMapÀàºÍTreeMapÀà ¡¡¡¡¡°¼¯ºÏ¿ò¼Ü¡±ÌṩÁ½ÖÖ³£¹æµÄMapʵÏÖ£ºHashMapºÍTreeMap (TreeMapʵÏÖSortedMap½Ó¿Ú)¡£ÔÚMap ÖвåÈ롢ɾ³ýºÍ¶¨Î»ÔªËØ£¬HashMap ÊÇ×îºÃµÄÑ¡Ôñ¡£µ«Èç¹ûÄúÒª°´×ÔȻ˳Ðò»ò×Ô¶¨Òå˳Ðò±éÀú¼ü£¬ÄÇôTreeMap»á¸üºÃ¡£Ê¹ÓÃHashMapÒªÇóÌí¼ÓµÄ¼üÀàÃ÷È·¶¨ÒåÁËhashCode()ºÍequals()µÄʵÏÖ¡£ ¡¡¡¡Õâ¸öTreeMapûÓе÷ÓÅÑ¡ÏÒòΪ¸ÃÊ÷×Ü´¦ÓÚÆ½ºâ״̬¡£ ¡¡¡¡4.4.1. HashMapÀà ¡¡¡¡ÎªÁËÓÅ»¯HashMap¿Õ¼äµÄʹÓã¬Äú¿ÉÒÔµ÷ÓųõʼÈÝÁ¿ºÍ¸ºÔØÒò×Ó¡£ ¡¡¡¡(1) HashMap(): ¹¹½¨Ò»¸ö¿ÕµÄ¹þÏ£Ó³Ïñ ¡¡¡¡(2) HashMap(Map m): ¹¹½¨Ò»¸ö¹þÏ£Ó³Ïñ£¬²¢ÇÒÌí¼ÓÓ³ÏñmµÄËùÓÐÓ³Éä ¡¡¡¡(3) HashMap(int initialCapacity): ¹¹½¨Ò»¸öÓµÓÐÌØ¶¨ÈÝÁ¿µÄ¿ÕµÄ¹þÏ£Ó³Ïñ ¡¡¡¡(4) HashMap(int initialCapacity, float loadFactor): ¹¹½¨Ò»¸öÓµÓÐÌØ¶¨ÈÝÁ¿ºÍ¼ÓÔØÒò×ӵĿյĹþÏ£Ó³Ïñ ¡¡¡¡4.4.2. TreeMapÀà ¡¡¡¡TreeMapûÓе÷ÓÅÑ¡ÏÒòΪ¸ÃÊ÷×Ü´¦ÓÚÆ½ºâ״̬¡£ ¡¡¡¡(1) TreeMap():¹¹½¨Ò»¸ö¿ÕµÄÓ³ÏñÊ÷ ¡¡¡¡(2) TreeMap(Map m): ¹¹½¨Ò»¸öÓ³ÏñÊ÷£¬²¢ÇÒÌí¼ÓÓ³ÏñmÖÐËùÓÐÔªËØ ¡¡¡¡(3) TreeMap(Comparator c): ¹¹½¨Ò»¸öÓ³ÏñÊ÷£¬²¢ÇÒʹÓÃÌØ¶¨µÄ±È½ÏÆ÷¶Ô¹Ø¼ü×Ö½øÐÐÅÅÐò ¡¡¡¡(4) TreeMap(SortedMap s): ¹¹½¨Ò»¸öÓ³ÏñÊ÷£¬Ìí¼ÓÓ³ÏñÊ÷sÖÐËùÓÐÓ³É䣬²¢ÇÒʹÓÃÓëÓÐÐòÓ³ÏñsÏàͬµÄ±È½ÏÆ÷ÅÅÐò ¡¡¡¡4.5. LinkedHashMapÀà ¡¡¡¡LinkedHashMapÀ©Õ¹HashMap£¬ÒÔ²åÈë˳Ðò½«¹Ø¼ü×Ö/Öµ¶ÔÌí¼Ó½øÁ´½Ó¹þÏ£Ó³ÏñÖС£ÏóLinkedHashSetÒ»Ñù£¬LinkedHashMapÄÚ²¿Ò²²ÉÓÃË«ÖØÁ´½ÓʽÁÐ±í¡£ ¡¡¡¡(1) LinkedHashMap(): ¹¹½¨Ò»¸ö¿ÕÁ´½Ó¹þÏ£Ó³Ïñ ¡¡¡¡(2) LinkedHashMap(Map m): ¹¹½¨Ò»¸öÁ´½Ó¹þÏ£Ó³Ïñ,²¢ÇÒÌí¼ÓÓ³ÏñmÖÐËùÓÐÓ³Éä ¡¡¡¡(3) LinkedHashMap(int initialCapacity): ¹¹½¨Ò»¸öÓµÓÐÌØ¶¨ÈÝÁ¿µÄ¿ÕµÄÁ´½Ó¹þÏ£Ó³Ïñ ¡¡¡¡(4) LinkedHashMap(int initialCapacity, float loadFactor): ¹¹½¨Ò»¸öÓµÓÐÌØ¶¨ÈÝÁ¿ºÍ¼ÓÔØÒò×ӵĿյÄÁ´½Ó¹þÏ£Ó³Ïñ ¡¡¡¡(5) LinkedHashMap(int initialCapacity, float loadFactor, ¡¡¡¡boolean accessOrder): ¹¹½¨Ò»¸öÓµÓÐÌØ¶¨ÈÝÁ¿¡¢¼ÓÔØÒò×ӺͷÃÎÊ˳ÐòÅÅÐòµÄ¿ÕµÄÁ´½Ó¹þÏ£Ó³Ïñ ¡¡¡¡¡°Èç¹û½«accessOrderÉèÖÃΪtrue,ÄÇôÁ´½Ó¹þÏ£Ó³Ïñ½«Ê¹Ó÷ÃÎÊ˳Ðò¶ø²»ÊDzåÈë˳ÐòÀ´µü ¡¡¡¡´ú¸÷¸öÓ³Ïñ¡£Ã¿´Îµ÷ÓÃget»òÕßput·½·¨Ê±£¬Ïà¹ØµÄÓ³Éä±ã´ÓËüµÄµ±Ç°Î»ÖÃÉÏɾ³ý£¬È»ºó·Åµ½Á´½ÓʽӳÏñÁбíµÄ½áβ´¦£¨Ö»ÓÐÁ´½ÓʽӳÏñÁбíÖеÄλÖòŻáÊܵ½Ó°Ï죬¹þÏ£±íÔªÔò²»ÊÜÓ°Ïì¡£¹þÏ£±íÓ³Éä×ÜÊÇ´ýÔÚ¶ÔÓ¦Óڹؼü×ֵĹþÏ£ÂëµÄ¹þÏ£±íÔªÖУ©¡£¡± ¡¡¡¡¡°¸ÃÌØÐÔ¶ÔÓÚʵÏÖ¸ßËÙ»º´æµÄ¡°É¾³ý×î½ü×îÉÙʹÓá±µÄÔ­ÔòºÜÓÐÓá£ÀýÈ磬Äã¿ÉÒÔÏ£Íû½«×î³£·ÃÎʵÄÓ³Éä±£´æÔÚÄÚ´æÖУ¬²¢ÇÒ´ÓÊý¾Ý¿âÖжÁÈ¡²»¾­³£·ÃÎʵĶÔÏó¡£µ±ÄãÔÚ±íÖÐÕÒ²»µ½Ä³¸öÓ³É䣬²¢ÇҸñíÖеÄÓ³ÉäÒѾ­·ÅµÃ·Ç³£Âúʱ£¬Äã¿ÉÒÔÈõü´úÆ÷½øÈë¸Ã±í£¬½«Ëüö¾ÙµÄ¿ªÍ·¼¸¸öÓ³Éäɾ³ýµô¡£ÕâЩÊÇ×î½ü×îÉÙʹÓõÄÓ³Éä¡£¡± ¡¡¡¡(6) protected boolean removeEldestEntry(Map.Entry eldest): Èç¹ûÄãÏëɾ³ý×îÀϵÄÓ³É䣬Ôò¸²¸Ç¸Ã·½·¨£¬ÒԱ㷵»Øtrue¡£µ±Ä³¸öÓ³ÉäÒѾ­Ìí¼Ó¸øÓ³ÏñÖ®ºó£¬±ãµ÷Óø÷½·¨¡£ËüµÄĬÈÏʵÏÖ·½·¨·µ»Øfalse£¬±íʾĬÈÏÌõ¼þÏÂÀϵÄÓ³ÉäûÓб»É¾³ý¡£µ«ÊÇÄã¿ÉÒÔÖØÐ¶¨Òå±¾·½·¨£¬ÒÔ±ãÓÐÑ¡ÔñµØÔÚ×îÀϵÄÓ³Éä·ûºÏij¸öÌõ¼þ£¬»òÕßÓ³Ïñ³¬¹ýÁËij¸ö´óСʱ£¬·µ»Øtrue¡£ ¡¡¡¡4.6. WeakHashMapÀà ¡¡¡¡WeakHashMapÊÇMapµÄÒ»¸öÌØÊâʵÏÖ£¬ËüʹÓÃWeakReference(ÈõÒýÓÃ)À´´æ·Å¹þÏ£±í¹Ø¼ü×Ö¡£Ê¹ÓÃÕâÖÖ·½Ê½Ê±£¬µ±Ó³ÉäµÄ¼üÔÚ WeakHashMap µÄÍⲿ²»ÔÙ±»ÒýÓÃʱ£¬À¬»øÊÕ¼¯Æ÷»á½«Ëü»ØÊÕ£¬µ«Ëü½«°Ñµ½´ï¸Ã¶ÔÏóµÄÈõÒýÓÃÄÉÈëÒ»¸ö¶ÓÁС£WeakHashMapµÄÔËÐн«¶¨ÆÚ¼ì²é¸Ã¶ÓÁУ¬ÒÔ±ãÕÒ³öе½´ïµÄÈõÓ¦Óᣵ±Ò»¸öÈõÒýÓõ½´ï¸Ã¶ÓÁÐʱ£¬¾Í±íʾ¹Ø¼ü×Ö²»ÔÙ±»ÈκÎÈËʹÓ㬲¢ÇÒËüÒѾ­±»ÊÕ¼¯ÆðÀ´¡£È»ºóWeakHashMap±ãɾ³ýÏà¹ØµÄÓ³Éä¡£ ¡¡¡¡(1) WeakHashMap(): ¹¹½¨Ò»¸ö¿ÕÈõ¹þÏ£Ó³Ïñ ¡¡¡¡(2) WeakHashMap(Map t): ¹¹½¨Ò»¸öÈõ¹þÏ£Ó³Ïñ,²¢ÇÒÌí¼ÓÓ³ÏñtÖÐËùÓÐÓ³Éä ¡¡¡¡(3) WeakHashMap(int initialCapacity): ¹¹½¨Ò»¸öÓµÓÐÌØ¶¨ÈÝÁ¿µÄ¿ÕµÄÈõ¹þÏ£Ó³Ïñ ¡¡¡¡(4) WeakHashMap(int initialCapacity, float loadFactor): ¹¹½¨Ò»¸öÓµÓÐÌØ¶¨ÈÝÁ¿ºÍ¼ÓÔØÒò×ӵĿյÄÈõ¹þÏ£Ó³Ïñ ¡¡¡¡4.6. IdentityHashMapÀà ¡¡¡¡IdentityHashMapÒ²ÊÇMapµÄÒ»¸öÌØÊâʵÏÖ¡£ÔÚÕâ¸öÀàÖУ¬¹Ø¼ü×ֵĹþÏ£Âë²»Ó¦¸ÃÓÉhashCode()·½·¨À´¼ÆË㣬¶øÓ¦¸ÃÓÉSystem.identityHashCode·½·¨½øÐмÆËã(¼´Ê¹ÒѾ­ÖØÐ¶¨ÒåÁËhashCode·½·¨)¡£ÕâÊÇObject.hashCode¸ù¾Ý¶ÔÏóµÄÄÚ´æµØÖ·À´¼ÆËã¹þÏ£ÂëʱʹÓõķ½·¨¡£ÁíÍ⣬ΪÁ˶Ը÷¸ö¶ÔÏó½øÐбȽϣ¬IdentityHashMap½«Ê¹ÓÃ==£¬¶ø²»Ê¹ÓÃequals·½·¨¡£ ¡¡¡¡»»¾ä»°Ëµ£¬²»Í¬µÄ¹Ø¼ü×Ö¶ÔÏ󣬼´Ê¹ËüÃǵÄÄÚÈÝÏàͬ£¬Ò²±»ÊÓΪ²»Í¬µÄ¶ÔÏó¡£IdentityHashMapÀà¿ÉÒÔÓÃÓÚʵÏÖ¶ÔÏóÍØÆË½á¹¹×ª»»(topology-preserving object graph transformations)(±ÈÈçʵÏÖ¶ÔÏóµÄ´®Ðл¯»òÉî¶È¿½±´)£¬ÔÚ½øÐÐת»»Ê±£¬ÐèÒªÒ»¸ö¡°½Úµã±í¡±¸ú×ÙÄÇЩÒѾ­´¦Àí¹ýµÄ¶ÔÏóµÄÒýÓ᣼´Ê¹ÅöÇÉÓжÔÏóÏàµÈ£¬¡°½Úµã±í¡±Ò²²»Ó¦ÊÓÆäÏàµÈ¡£ÁíÒ»¸öÓ¦ÓÃÊÇά»¤´úÀí¶ÔÏó¡£±ÈÈ磬µ÷ÊÔ¹¤¾ßÏ£ÍûÔÚ³ÌÐòµ÷ÊÔÆÚ¼äά»¤Ã¿¸ö¶ÔÏóµÄÒ»¸ö´úÀí¶ÔÏó¡£ ¡¡¡¡¡°IdentityHashMapÀ಻ÊÇÒ»°ãÒâÒåµÄMapʵÏÖ£¡ËüµÄʵÏÖÓÐÒâµÄÎ¥±³ÁËMap½Ó¿ÚÒªÇóͨ¹ýequals·½·¨±È½Ï¶ÔÏóµÄÔ¼¶¨¡£Õâ¸öÀà½öʹÓÃÔÚºÜÉÙ·¢ÉúµÄÐèҪǿµ÷µÈͬÐÔÓïÒåµÄÇé¿ö¡£¡± ¡¡¡¡(1) IdentityHashMap (): ¹¹½¨Ò»¸ö¿ÕµÄȫͬ¹þÏ£Ó³Ïñ£¬Ä¬ÈÏÔ¤ÆÚ×î´ó³ß´çΪ21 ¡¡¡¡¡°Ô¤ÆÚ×î´ó³ß´çÊÇÓ³ÏñÆÚÍû°Ñ³ÖµÄ¼ü/ÖµÓ³ÉäµÄ×î´óÊýÄ¿¡± ¡¡¡¡(2) IdentityHashMap (Map m): ¹¹½¨Ò»¸öȫͬ¹þÏ£Ó³Ïñ,²¢ÇÒÌí¼ÓÓ³ÏñmÖÐËùÓÐÓ³Éä ¡¡¡¡(3) IdentityHashMap (int expectedMaxSize): ¹¹½¨Ò»¸öÓµÓÐÔ¤ÆÚ×î´ó³ß´çµÄ¿ÕµÄȫͬ¹þÏ£Ó³Ïñ¡£·ÅÖó¬¹ýÔ¤ÆÚ×î´ó³ß´çµÄ¼ü/ÖµÓ³Éäʱ£¬½«ÒýÆðÄÚ²¿Êý¾Ý½á¹¹µÄÔö³¤£¬ÓÐʱ¿ÉÄܷܺÑʱ¼ä kasen ·¢±íÓÚ 2004-08-11 11:50 ÒýÓÃTrackback(0) | ±à¼­ ÆÀÂÛ ·¢±íÆÀÂÛ ×îºó¸üРÔËÐÐÁËÁ½¸öÓÃhibernateµÄ¼òµ¥Àý×Ó Java ÃæÊÔÖеÄÏÝÚå[×ªÔØ] oracle in ¹Ø¼ü×ÖµÄÏÞÖÆ Hibernate³õ´ÎÊÔÔËÐÐ ÔÓÊ«¼¯£­(Ô­´´) ÖÕÓÚ»ØÀ´ÁË ÄϾ©³ö²î MySql ÈëÃÅ JAVA »ù´¡5 JAVA »ù´¡4