集合面题总结

大纲:

 先说说大纲的构成部分:

       Iterable接口:

             优点:实现Iterable接口的类可以拥有增强for循环(foreach循环)

             方法:hashNext()       是否存在下一项

                        next()                获取下一项

                         remove()          该方法可以删除由next()最新返回的值(注意,此后不能调用remove,直到next再一次调用后以后)

       Collection接口:

                 继承: Iterable接口

                 方法:size()                      返回集合中的项数

                            isEmpty()               判断集合中是否为空

                            contains(Object)         判断集合中是否包含某项

                             clear()                    清楚所有项

                             add(E)                    集合中添加某项

                             remove(Object)       从集合中删除某项

                             iterator()                  迭代器,遍历集合  

                  子类:

                          List接口:

                                  特点:可以添加重复的元素

                                              有顺序(注意,顺序跟排序搞清楚定义)

                                   子类:

                                            ArrayList:

                                                           优点:get和set调用花费常熟时间(查询快)

                                                           缺点:心项对的插入和现有项的删除代价昂贵,除非是在末端进行

                                             LinkedList:

                                                            优点:新项的插入和先有项的删除开销很小

                                                            缺点:对get和set调用昂贵

                       

                           Set接口:

                                  特点:不保存重复的元素

                                              有顺序

                                   子类:

                                            HashSet:

                                                           速度最快,没有明显的顺序保存元素

                                                           混合元素可以是null,但只能放入一个null

                                            TreeSet:

                                                            按照比较结构的升序保存对象(排序)

                                             LinkedHashSet:

                                                             按照被添加的顺序保存对象(排序)

                              Queue:

                                     特点:先进先出

            Map接口:

                       特点:以键值对存储

                        子类:

                               HashMap:

                                                提供了最快的访问技术,没有按照明显的顺序保存对象

                               TreeMap:

                                                 按照比较结果的升序保存键

                                 LinkedHashMap:

                                                 按照插入顺序保存键,同时还保留了HashMap的查询速度

面试题:

1.ArrayList和LinkList的区别

            ArrayList:以数组方式存储对象,对象查询快

            LinkList:以双向链表形式存储对象,插入速度快

 

2.Collection接口的remove()方法和Iterator接口的remove()方法区别

            性能方面:

                      Collection的remove方法需要先按照下标查到到该对象,查询消耗时间,然后再执行删除

                       Iterator的remove方法结合next()方法使用,效率更高

             容错方法:

                        Collection的remove方法里面可以放集合下标或者对象,需要参数才行,但是当你集合里面的对象少了,下标就需要从新排。这个时候可能会报错,报ConcurrentModificationException

                          Iterator的remove方法不会报错,因为iterator内部的对象个数和原来集合中对象的个数会保持一致

 

3.Array和ArrayList有什么区别

                Array:数组,定义时,必须声明数据类型和数组的大小

                ArrayList:动态数组(集合),是数组的复杂版本,可以储存不同数据类型,长度可变

 

4.怎么将一个数组转成List,怎么将一个List转换成数组

                转List:Arrays.asList(数组名)

                转数组:集合名.toArray();

 

5.HashSet,TreeSet,LinkedHashSet区别

                HashSet:操作速度快

                TreeSet:集合有排序功能

                 LinkedHashSet:按照插入的顺序存储集合

 

6.HashMap,TreeMap,LinkedHashMap区别

                   HashMap:操作速度快,但线程不安全

                   TreeMap:集合有排序功能

                    LinkedHashMap:按照插入的顺序存储集合

 

7.HashMap和HashSet的区别

                    HashMap比HashSet快

                    HashSet以键值对形式存储,HashSet以对象存储

                    HashMap调用put()方法添加对象,而HashSet调用add()方法添加对象

              

8.List,Set,Map之间的区别

                   List:可以允许重复对象,可以插入多个null,有序

                   Set:不允许重复对象,只能插入一个null,无序

                   Map:键必须唯一,但值可以重复。键只允许一个为null,值可以多个为null

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值