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

这样的题目属于随意发挥的题目:这样的题目比较的考水平,,两个方面的水平:一是要真正的明白这些内容,二是要有较强的总结和表述的能力。。如果你明白,但表述不清楚,在别人哪里等于不明白。。。

首先,,List和set具有相似性质,它们都是单列的元素的集合,,所以它们有一个共同的父接口,叫做Collection。。。

Set里面不允许有重复的元素,所谓重复,即是不能有两个相等(注意,不是仅仅是相同)的对象,,,即假设Set集合中有了一个A对象,现在我们要向Set集合再存入一个B对象,但是B对象与A对象equals相等,,则B对象存储不进去,所以,Set集合的add方法有一个boolean的返回值,当集合中没有某个元素的时候,此时add方法可以成功的加入该元素时,则返回true,当集合含有与某个元素equals相等的元素时候,此时add方法将会无法的加入该元素,返回结果为false..Set取元素时候,没法说取几个,只能以lterator接口取得所有的元素,再次的逐一的遍历某个元素。。。

      List表示有先后顺序的集合,注意,不是按照年龄,按照大小,按照价格之类的顺序,当我们多次的调用add(Obj e)方法时候,每次的加入的对象就像火车站买票有排队顺序一样,按照先来后到的顺序。。。有时候,也可以插队,即调用add(int index,Obj e)方法,,就可以指定当前对象在集合中的存放得位置。。一个对象可以反复的存储在List中,每调用一次add方法,这个对象就会被插入到集合中一次,,其实,并不是把这个对象本身存储进了集合中,而是在集合中用一个索引变量指向这个对象,,,如图X所示,List除了可以以lterator接口取得所有的元素,再逐一的遍历各个元素之外,还可以调用get(index i)来明确的说明取得第几个。。

        Map与List和Set不同,它是双列的集合,其中有put方法,,定义如下:put(Obj key,obj value),每次存储的时候,,要存储一对key/value,不能存储重复的key,,这个重复的规则也是按照equals比较相等。。则可以根据key获得相应的value,即get(Object key)返回值为key所对应得value,另外,也可以获得所有得key得集合,还可以获得所有得value得结合,,还可以获得kay和value组成的Map.Entry对象的集合。。。

      List以特定的次序来持有元素,,可有重复的元素,,Set无法拥有重复的元素,,内部排序,,Map保存key-value值,value可以多值。。。

 

      HashSet按照hashCode值的某种运算方式进行存储,,而不是直接按照hashCode值的大小进行存储。。例如

"abc"----->78,“def”---->62,"xyz"----->65在hashSet中的存储顺序不是62,65,78。。。LinkedHashSet按插入的顺序存储,那被存储对象的hashCode方法还有什么用呢?hashSet比较两个对象是否相等,首先看hashCode方法是否相等,然后看equals方法是否相等,,new两个Student插入到HashSet中,看HashSet的size,实现hashCode和equals方法再看size..

同一个对象可以在Vector中加入多次。。往集合里面加入元素,相当于集合里面用一根绳子连接到了目标对象。。往HashSet中却加入不了多次的。。

 

 

 

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值