博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
List、Map、Set三个接口,存取元素时,各有什么特点?(大厂面试题)
阅读量:3959 次
发布时间:2019-05-24

本文共 1308 字,大约阅读时间需要 4 分钟。

List、Map、Set三个接口,存取元素时,各有什么特点?


在这里插入图片描述

     首先, List与Set具有相似性,它们都是单列元素的集合,所以,它们有一个功共同的父接口,叫 Collection。Set里面不允许有重复的元素,所谓重复,即不能有两个相等(注意,不是仅仅是相同)的对象,即假设Set集合中有了一个A对象,现在我要向Set集合再存入一个B对象,但B对象与A对象equals相等,则B对象存储不进去,所以,Set集合的add方法有一个boolean 的返回值,当集合中没有某个元素,此时add方法可成功加入该元素时,则返回true,当集合含有与某个元素equals相等的元素时,此时add方法无法加入该元素,返回结果为false。 Set取元素时,没法说取第几个,只能以 Iterator 接口取得所有的元素,再逐一遍历各个元素。

     List表示有先后顺序的集合,注意,不是那种按年龄、按大小、按价格之类的排序。当我们多次调用add(Obj e)方法时,每次加入的对象就俊火车站买票有排队顺序一样,按先来后到的顺序排序。有时候,也可以插队,即调用add(int index Obie)方法、就可以指定当前对象在集合中的存放位置。一个对象可以被反复存储讲List中每调用一次add方法这个对象就被插入进集合中一次,其实,并不是把这个对象本身存储讲了集合中而是在集合中用一个索引变量指向这个对象,当这个对象被add 多次时,即相当干集合中有多个索引指向了这个对象.如图×所示。List除了可以以lterator接口取得所有的元素再逐一遍历久个示素少外还可以调用 get(indexi)来明确说明取第几个。
      Map与 List和Set不同,它是双列的集合,其中有put方法,定义如下:put(obi key obj value),每次存储时,要存储一对key/value,不能存储重复的key,这个重复的规则也是按equals 比较相等。取则可以根据key 获得相应的value,即 get(Object key)返回值为key 所对应的value。另外,也可以获得所有的key的结合,还可以获得所有的value 的结合,还可以获得key和value组合成的Map.Entry对象的集合。
      List以特定次序来持有元素,可有重复元素。Set无法拥有重复元素,内部排序。Map保存key-value值,value可多值。
     HashSet 按照 hashcode值的某种运算方式进行存储,而不是直接按hashCode值的大小进行存储。例如, “abc”—> 78,"def”—>62, "xyz” —>65在hashSet中的存储顺序不是62,65,78.hashset集合比较两个对象是否相等,首先看hashcode方法是否相等,然后看equals方法是否相等。new两个Student插入到 HashSet中,看HashSet的size,实现 hashcode和equals方法后再看size.
      同一个对象可以在Vector中加入多次。往集合里面加元素,相当于集合里用一根绳子连接到了目标对象。往HashSet 中却加不了多次的。

转载地址:http://kyazi.baihongyu.com/

你可能感兴趣的文章