美文网首页
Java集合详解

Java集合详解

作者: 九叶轻尘 | 来源:发表于2018-12-17 14:41 被阅读5次

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接口。底层是以双向链表的形式实现。所以插入,删除快,但是查找慢。不是线程安全的。

使用迭代器Iterator遍历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 值也应该相同。

以迭代器Iterator遍历set集合 遍历后的结果

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

HashMap的几种遍历方法

相关文章

网友评论

      本文标题:Java集合详解

      本文链接:https://www.haomeiwen.com/subject/gqlphqtx.html