标签:容量 形式 扩容 str 定义 空间 否则 接口 对象
Java提供的两大接口:Collection接口和Map接口,其他的集合类都是由这两个接口衍生
Collection接口
Collection接口定义了一个包含一批对象的集合。该接口的主要方法包括:
Map接口
Map接口在Collection的基础上,为其中的每个对象指定了一个key,并使用Entry保存每个key-value对,以实现通过key快速定位到对象(value)。Map接口的主要方法包括:
常用集合类List
List接口继承自Collection,用于定义以列表形式存储的集合,List接口为集合中的每个对象分配了一个索引(index),标记该对象在List中的位置,并可以通过index定位到指定位置的对象。
List在Collection基础上增加的主要方法包括:
List接口的常用实现类:
ArrayList
ArrayList基于数组来实现集合的功能,其内部维护了一个可变长的对象数组,集合内所有对象存储于这个数组中,并实现该数组长度的动态伸缩,ArrayList使用数组拷贝来实现指定位置的插入和删除。
LinkedList
LinkedList基于链表来实现集合的功能,其实现了静态类Node,集合中的每个对象都由一个Node保存,每个Node都拥有到自己的前一个和后一个Node的引用
两者的区别:
Set常用类
Set接口也继承Collection接口,里面不能存放重复元素,所以加入元素的时候必须要重写equals( )方法
HashSet:
HashSet中add方法调用的是底层HashMap中的put()方法,而如果是在HashMap中调用put,首先会判断key是否存在,如果key存在则修改value值,如果key不存在这插入这个key-value。而在set中,因为value值没有用,也就不存在修改value值的说法,因此往HashSet中添加元素,首先判断元素(也就是key)是否存在,如果不存在这插入,如果存在着不插入,这样HashSet中就不存在重复值
HashSet通过重写equals( )方法和hashcode( )方法来判断元素是否重复
TreeSet:
①对于java类库中定义的类,TreeSet可以直接对其进行存储,如String,Integer等,因为这些类已经实现了Comparable接口);
②对于自定义类,如果不做适当的处理,TreeSet中只能存储一个该类型的对象实例,否则无法判断是否重复。
标签:容量 形式 扩容 str 定义 空间 否则 接口 对象
原文地址:https://www.cnblogs.com/lloney0/p/11066014.html