java集合知识点

Java中集合类是放在java.util中,是一个用来存放对象的容器。

1、只能存放对象,不能存放int等类型,存的是对应的是Integer等对象

2、存的是对象的引用,对象本身是放在堆内存中

3、可以存放不同类型的对象(因为实现的时候使用了泛型),不建议使用。

常用的三种集合接口:

List:继承自Collection。可以存在相同的对象,有序的。具体实现类有ArrayList,LinkedList,Vector等(已经被废弃,很少使用)

Set:继承自Collection。不能存在相同的对象,无序的,就是数学意义上的集合。具体实现类有HashSet,LinkedHashSet,TreeSet等。

Map:以键值对的形式存放对象。key-value。一般是key为String类型,value为Object的类型。具体实现类有HashMap,LinkedHashMap,TreeMap等。

ArrayList:实现自List接口。底层是以数组的形式实现,可以按照索引取出对应位置的元素,允许元素为null。不是线程安全的。查找速度快,插入、删除慢。

LinkedList:实现在List接口。底层是以双向链表的形式实现。所以插入,删除快,但是查找慢。不是线程安全的。
在这里插入图片描述
HashSet:实现Set接口。不能保证元素的顺序,元素不能重复。元素可以为null。底层是一个数组,但是元素的位置和元素的取值不存在确定的关系,而是将元素进行Hash运算之后的位置。这样做是为了增加查询的速度。index = hash(value)。不是线程安全。

当向HashSet集合中存入一个元素时,HashSet会先调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据hashCode值决定该对象在HashSet中的存储位置。如果hashCode 值不同,直接把该元素存储到 hashCode() 指定的位置。如果 hashCode 值相同,那么会继续判断该元素和集合对象的 equals() 作比较。hashCode 相同,equals 为 true,则视为同一个对象,不保存在 hashSet中。hashCode 相同,equals 为 false,则存储在之前对象同槽位的链表上,这非常麻烦,我们应该约束这种情况,即保证:如果两个对象通过 equals() 方法返回 true,这两个对象的 hashCode 值也应该相同。

在这里插入图片描述
在这里插入图片描述
HashMap:是一个映射关系。这个集合中的数据是以Entry(key,value)的形式存在。一般情况下,key是String,而value是Object。key不能重复,但是value可以重复。HashMap的原理是index=hash(key)。也就是根据key进行hash运算来确定Object的存储位置。

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值