集合

Java容器可分为两大类:

  • Collection

    • List

      • ArrayList
      • LinkedList
      • Vector(了解,已过时)
    • Set

      • HashSet

        • LinkedHashSet
      • TreeSet

  • Map

    • HashMap

      • LinkedHashMap
    • TreeMap

    • ConcurrentHashMap

    • Hashtable(了解,,已过时)

着重标出的那些就是我们用得最多的容器。

一、ArrayList和Vector的区别

共同点:

  • 这两个类都实现了List接口,它们都是有序的集合(存储有序),底层是数组。我们可以按位置索引号取出某个元素,允许元素重复和为null

区别:

  • 同步性:

    • ArrayList是非同步的
    • Vector是同步的
    • 即便需要同步的时候,我们可以使用Collections工具类来构建出同步的ArrayList而不用Vector
  • 扩容大小:

    • Vector增长原来的一倍,ArrayList增长原来的0.5倍

二、HashMap和Hashtable的区别

共同点:

  • 从存储结构和实现来讲基本上都是相同的,都是实现Map接口~

区别:

  • 同步性:

  • 是否允许为null:

    • HashMap允许为null
    • Hashtable不允许为null
  • contains方法

    • 这知识点是在牛客网刷到的,没想到这种题还会有(我不太喜欢)....
    • Hashtable有contains方法
    • HashMap把Hashtable的contains方法去掉了,改成了containsValue和containsKey
  • 继承不同:

    • HashMap<K,V> extends AbstractMap<K,V>
    • public class Hashtable<K,V> extends Dictionary<K,V>

三、List和Map的区别

共同点:

  • 都是Java常用的容器,都是接口

不同点:

  • 存储结构不同

    • List是存储单列的集合
    • Map存储的是key-value键值对的集合
  • 元素是否可重复

    • List允许元素重复
    • Map不允许key重复
  • 是否有序

    • List集合是有序的(存储有序)
    • Map集合是无序的(存储无序)
      四、Collection和Collections的区别
      Collection是集合的上级接口,继承它的有Set和List接口
      Collections是集合的工具类,提供了一系列的静态方法对集合的搜索、查找、同步等操作
      五、Java中HashMap的key值要是为类对象则该类需要满足什么条件?
      需要同时重写该类的hashCode()方法和它的equals()方法。

从源码可以得知,在插入元素的时候是先算出该对象的hashCode。如果hashcode相等话的。那么表明该对象是存储在同一个位置上的。
如果调用equals()方法,两个key相同,则替换元素
如果调用equals()方法,两个key不相同,则说明该hashCode仅仅是碰巧相同,此时是散列冲突,将新增的元素放在桶子上
一般来说,我们会认为:只要两个对象的成员变量的值是相等的,那么我们就认为这两个对象是相等的!因为,Object底层比较的是两个对象的地址,而对我们开发来说这样的意义并不大~这也就为什么我们要重写equals()方法

重写了equals()方法,就要重写hashCode()的方法。因为equals()认定了这两个对象相同,而同一个对象调用hashCode()方法时,是应该返回相同的值的!
[集合的基本问题](https://www.jianshu.com/p/80c999ebb5f0

image.png

什么是哈希?
将任意长度的输入,通过散列函数计算后,转为固定长度的输出。输出就是哈希值。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java集合类可用于存储数量不等的对象,并可以实现常用的数据结构如栈,队列等,Java集合还可以用于保存具有映射关...
    小徐andorid阅读 5,947评论 0 13
  • 一、集合入门总结 集合框架: Java中的集合框架大类可分为Collection和Map;两者的区别: 1、Col...
    程序员欧阳阅读 13,979评论 2 61
  • 集合类框架的介绍: ![Java 集合类框架](https://upload-images.jianshu.io/...
    LynnGuo阅读 4,055评论 0 1
  • ArrayList实现原理要点概括 参考文献:http://zhangshixi.iteye.com/blog/6...
    晨光光阅读 4,719评论 0 1
  • 下笔之前我在思考,题目的必要性。那种浅浅的土台,盘庚的杂草,我能用什么样的赞美之词去形容它呢? 年关刚过,串亲戚这...
    南木生阅读 3,808评论 0 2