这样的题属于随意发挥题:这样的题比较考水平,两个方面的水平:一是要真正明白这些内容,二是要有较强的总结和表述能力。若是你明白,但表述不清楚,在别人那里则等同于不明白。spa
首先,List与Set具备类似性,它们都是单列元素的集合,因此,它们有一个功共同的父接口,叫Collection。Set里面不容许有重复的元素,所谓重复,即不能有两个相等(注意,不是仅仅是相同)的对象 ,即假设Set集合中有了一个A对象,如今我要向Set集合再存入一个B对象,但B对象与A对象equals相等,则B对象存储不进去,因此,Set集合的add方法有一个boolean的返回值,当集合中没有某个元素,此时add方法可成功加入该元素时,则返回true,当集合含有与某个元素equals相等的元素时,此时add方法没法加入该元素,返回结果为false。Set取元素时,无法说取第几个,只能以Iterator接口取得全部的元素,再逐一遍历各个元素。code
List表示有前后顺序的集合, 注意,不是那种按年龄、按大小、按价格之类的排序。当咱们屡次调用add(Obj e)方法时,每次加入的对象就像火车站买票有排队顺序同样,按先来后到的顺序排序。有时候,也能够插队,即调用add(int index,Obj e)方法,就能够指定当前对象在集合中的存放位置。一个对象能够被反复存储进List中,每调用一次add方法,这个对象就被插入进集合中一次,其实,并非把这个对象自己存储进了集合中,而是在集合中用一个索引变量指向这个对象,当这个对象被add屡次时,即至关于集合中有多个索引指向了这个对象,如图x所示。List除了能够以Iterator接口取得全部的元素,再逐一遍历各个元素以外,还能够调用get(index i)来明确说明取第几个。orm
Map与List和Set不一样,它是双列的集合,其中有put方法,定义以下:put(obj key,obj value),每次存储时,要存储一对key/value,不能存储重复的key,这个重复的规则也是按equals比较相等。取则能够根据key得到相应的value,即get(Object key)返回值为key 所对应的value。另外,也能够经过keySet
()
得到全部的key的结合 Set<K>
,还能够经过values
()
得到全部的value的结合Collection<V>
,还能够经过entrySet
()
得到key和value组合成的Map.Entry对象的集合 Set<Map.Entry<K,V>>
。对象
List 以特定次序来持有元素,可有重复元素。Set 没法拥有重复元素,内部排序。Map 保存key-value值,value可多值。排序