List,Map,Set三个接口存取元素时,各有什么特点
(一)List1、可以允许重复的对象。
2、可以插入多个null元素。
3、是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序。
4、常用的实现类有 ArrayList、LinkedList
和
Vector。ArrayList
最为流行,它提供了使用索引的随意访问,而
LinkedList
则对于经常需要从
List
中添加或删除元素的场合更为合适。
(二)Set
1、不允许重复对象。
2、无序容器,你无法保证每个元素的存储顺序,TreeSet通过
Comparator
或者
Comparable。
3、只允许一个
null
元素。
4、Set
接口最流行的几个实现类是
HashSet、LinkedHashSet
以及
TreeSet。最流行的是基于
HashMap
实现的
HashSet。
(三)map
1、Map不是collection的子接口或者实现类。Map是一个接口。
2、Map
的
每个
Entry
都持有两个对象,也就是一个键一个值,Map
可能会持有相同的值对象但键对象必须是唯一的。
3.、TreeMap
也通过
Comparator
或者
Comparable
维护了一个排序顺序。
4.、Map
里你可以拥有随意个
null
值但最多只能有一个
null
键。
5、Map
接口最流行的几个实现类是
HashMap、LinkedHashMap、Hashtable
和
TreeMap。(HashMap、TreeMap最常用)。
扩展资料
list和set、map之间的转化方式:
1、list转成set集合
Set
studentSet=studentList.stream().map(Student::getId).collect(Collectors.toSet());
2、list转成map
Map
studentMap=studentList.stream().collect(Collectors.toMap(Student::getId,a
->
a,(k1,k2)->k1));
3、list转成map并且根据student中的name进行分组
Map<String,List>
group=studentList.stream().collect(Collectors.groupingBy(Student::getName));
参考资料:百度百科-java集合
绛旓細锛堜竴锛List 1銆佸彲浠ュ厑璁搁噸澶嶇殑瀵硅薄銆2銆佸彲浠ユ彃鍏ュ涓猲ull鍏冪礌銆3銆佹槸涓涓湁搴忓鍣紝淇濇寔浜嗘瘡涓厓绱犵殑鎻掑叆椤哄簭锛岃緭鍑虹殑椤哄簭灏辨槸鎻掑叆鐨勯『搴忋4銆佸父鐢ㄧ殑瀹炵幇绫绘湁 ArrayList銆丩inkedList 鍜 Vector銆侫rrayList 鏈涓烘祦琛岋紝瀹冩彁渚涗簡浣跨敤绱㈠紩鐨勯殢鎰忚闂紝鑰 LinkedList 鍒欏浜庣粡甯搁渶瑕佷粠 List 涓坊鍔犳垨鍒犻櫎鍏冪礌鐨...
绛旓細Map鎺ュ彛鏈涓変釜瀹炵幇绫伙細HashMap锛HashTable锛孡inkeHashMap HashMap闈炵嚎绋嬪畨鍏紝楂樻晥锛屾敮鎸乶ull锛汬ashTable绾跨▼瀹夊叏锛屼綆鏁堬紝涓嶆敮鎸乶ull SortedMap鏈変竴涓疄鐜扮被锛歍reeMap 鍏跺疄鏈涓昏鐨勬槸锛list鏄敤鏉ュ鐞嗗簭鍒楃殑锛岃set鏄敤鏉ュ鐞嗛泦鐨勩侻ap鏄煡閬撶殑锛屽瓨鍌ㄧ殑鏄敭鍊煎 set 涓鑸棤搴忎笉閲嶅.map kv 缁撴瀯 list 鏈...
绛旓細List鐨勭壒鐐规槸鍏冪礌鏈夊簭銆佸厓绱犲彲閲嶅銆侺ist鎺ュ彛鐨勪富瑕佸疄鐜扮被鏈堿rrayList鍜孡inkedList銆Set鐨勭壒鐐规槸鍏冪礌鏃犲簭銆佸厓绱犱笉鍙噸澶嶃係et鎺ュ彛鐨勪富瑕佸疄鐜扮被鏈塇ashSet鍜孴reeSet銆Map鐨勭壒鐐规槸瀛樺偍鐨勫厓绱犳槸閿(Key)銆佸(Value)鏄犲皠鍏崇郴锛屽厓绱犻兘鏄垚瀵瑰嚭鐜扮殑銆侻ap鎺ュ彛鐨勪富瑕佸疄鐜扮被鏈塇ashMap鍜孴reeMap銆
绛旓細鍖哄埆鍦ㄤ簬瀹瑰櫒涓瘡涓綅缃繚瀛樼殑鍏冪礌涓暟.Collection姣忎釜浣嶇疆鍙兘淇濆瓨涓涓厓绱,鍖呮嫭List鍜Set.鍏朵腑List浠ヨ繘鍏ョ殑椤哄簭淇濆瓨涓缁勫厓绱; 鑰孲et涓殑鍏冪礌涓嶈兘閲嶅.ArrayList鏄竴绉List,HashSet鏄竴绉峉et,灏嗗厓绱犳坊鍔犲叆浠绘剰Collection閮藉彲浠ヤ娇鐢╝dd() 鏂规硶.Map淇濆瓨鐨勬槸鍋ュ煎.浣跨敤put()涓篗ap娣诲姞鍏冪礌,瀹冮渶瑕佷竴涓仴鍜屼竴涓间綔鍙傛暟...
绛旓細set銆map銆list鏄疛ava API灏佽鐨勬暟鎹粨鏋勩備箣鎵浠ュ皝瑁呭畠浠紝鏄负浜嗙鍚堟暟瀛︽剰涔変笂鐨剆et銆乵ap鍜宭ist涓婄殑涓浜涚壒鐐广傛瘮濡俿et锛堥泦鍚堬級鍏锋湁鏃犲簭鎬э紝鑰屼笖鍏冪礌涓嶈兘閲嶅銆俶ap涓昏鏄暎鍒楁濇兂锛屽嵆key-value鍊煎銆俵ist鏄摼琛ㄧ粨鏋勶紝鎻掑叆鍜屽垹闄ゅ厓绱狅紝涓涓湪澶达紝涓涓湪灏俱傚彟澶栬繕鏈塖tack鏄悓涓绔彃鍏ュ拰鍒犻櫎銆備綘璇翠粬浠...
绛旓細1銆List鎺ュ彛瀵笴ollection杩涜浜嗙畝鍗曠殑鎵╁厖锛屽畠鐨勫叿浣撳疄鐜扮被甯哥敤鐨勬湁ArrayList鍜孡inkedList銆備綘鍙互灏嗕换浣曚笢瑗挎斁鍒颁竴涓狶ist瀹瑰櫒涓紝骞跺湪闇瑕佹椂浠庝腑鍙栧嚭銆侫rrayList浠庡叾鍛藉悕涓彲浠ョ湅鍑哄畠鏄竴绉嶇被浼兼暟缁勭殑褰㈠紡杩涜瀛樺偍锛屽洜姝ゅ畠鐨勯殢鏈鸿闂熷害鏋佸揩锛岃孡inkedList鐨勫唴閮ㄥ疄鐜版槸閾捐〃锛屽畠閫傚悎浜庡湪閾捐〃涓棿闇瑕侀绻佽繘琛屾彃鍏...
绛旓細Set锛氭绱㈠厓绱犳晥鐜囦綆涓嬶紝鍒犻櫎鍜屾彃鍏ユ晥鐜囬珮锛屾彃鍏ュ拰鍒犻櫎涓嶄細寮曡捣鍏冪礌浣嶇疆鏀瑰彉锛汱ist锛氬拰鏁扮粍绫讳技锛孡ist鍙互鍔ㄦ佸闀匡紝鏌ユ壘鍏冪礌鏁堢巼楂橈紝鎻掑叆鍒犻櫎鍏冪礌鏁堢巼浣庯紝鍥犱负浼氬紩璧峰叾浠栧厓绱犱綅缃敼鍙橈紱Map锛氶傚悎鍌ㄥ瓨閿煎鐨勬暟鎹侸ava鏄竴闂ㄩ潰鍚戝璞$紪绋嬭瑷锛屼笉浠呭惛鏀朵簡C++璇█鐨勫悇绉嶄紭鐐癸紝杩樻憭寮冧簡C++閲岄毦浠ョ悊瑙g殑澶氱户鎵裤...
绛旓細闆嗗悎绫诲瀷涓昏鏈3绉嶏細set(闆嗭級銆list(鍒楄〃锛夊拰map(鏄犲皠)銆1銆丩ist锛堟湁搴忋佸彲閲嶅锛塋ist閲屽瓨鏀剧殑瀵硅薄鏄湁搴忕殑锛屽悓鏃朵篃鏄彲浠ラ噸澶嶇殑锛孡ist鍏虫敞鐨勬槸绱㈠紩锛屾嫢鏈変竴绯诲垪鍜岀储寮曠浉鍏崇殑鏂规硶锛屾煡璇㈤熷害蹇傚洜涓哄線list闆嗗悎閲屾彃鍏ユ垨鍒犻櫎鏁版嵁鏃讹紝浼氫即闅忕潃鍚庨潰鏁版嵁鐨勭Щ鍔紝鎵鏈夋彃鍏ュ垹闄ゆ暟鎹熷害鎱2銆Set锛堟棤搴忋佷笉...
绛旓細Collection 鏄竴涓緝楂樼殑鎶借薄锛List, Set 鍜 Map閮芥槸Collection鐨勫瓙鎺ュ彛 List鐨勭壒寰侊細 鍏佽閲嶅鍏冪礌锛屽瓨鍌ㄩ『搴忎笌鎻掑叆鍏冪礌椤哄簭涓鑷 Set 鐗瑰緛锛 涓嶅厑璁搁噸澶嶅厓绱(鍜屾暟瀛︿腑鐨勯泦鍚堜竴鏍)锛屼笉淇濊瘉鍏冪礌瀛樺偍椤哄簭 Map: 瀛樺偍鍏冪礌鏄竴绯诲垪 Key => Value (閿=>鍊) 姣斿 {"a"=>2, "b"=>5, "c"=3} ...
绛旓細List鍜孲et鏄户鎵胯嚜Collection鎺ュ彛鐨勬帴鍙锛孲et涓嶅厑璁搁噸澶嶇殑椤圭洰锛孡ist鍏佽閲嶅椤圭洰锛 Set鎺ュ彛娲剧敓鐨勭被鏈塗reeSet锛孒ashSet锛孡inkedHashSet銆 List鎺ュ彛娲剧敓鐨勭被鏈堿rrayList锛孷ector绛夈 Map鏄嫭绔嬬殑鎺ュ彛锛屼笉缁ф壙Collection鎺ュ彛銆侺ist銆丮ap銆丼et鐨勫尯鍒笌鑱旂郴锛歀ist鍜孲et鏄瓨鍌ㄥ崟鍒楁暟鎹殑闆嗗悎锛孧ap鏄瓨鍌ㄩ敭鍊煎杩欐牱鐨...