java Collection 集合

来源:互联网 发布:专业淘宝食品图片拍摄 编辑:程序博客网 时间:2024/05/16 09:58

Collection 集合下面常用子接口List和Set

List:

特点:元素线性存储,存取有序,元素可重复,有索引

List常用实现类:

Vector:底层数组实现,增删慢,查询快,线程安全,效率相对较低
ArrayList:底层数组实现,增删慢,查询快,线程不安全,效率较Vector高
LinkedList:底层双向;链表实现,增删快,查询慢,线程不安全,效率较高
如何选择使用哪个集合:增删多,查询少选择LinkedList;增删少,查询多选择ArrayList;如果增删和查询都多选择ArrayList。


Set:

特点:存取无序(除LinkedHashSet外),无索引,元素不可重复

Set常用实现类

HashSet:按照hash算法来存取元素,存取速度快,在向集合中添加元素时,会先比较该元素的hash码在集合中是否存在,不存在则添加,存在再用equals方法比较元素属性值,true则不添加,false则添加;因此在向Set集合中存自定义对象时通常需要重写equals和hashCode方法。
LinkedHashSet:是Set集合中唯一能保证存取有序的集合,底层是双向链表实现,和HashSet用法相同。
TreeSet:实现了SortedSet接口能够对集合中的元素排序,底层是二叉树,只能存储同一种类型的元素;在存自定义元素的时候需要指定排序方式。
自定义元素实现比较的两种方式:
1.实现Comparable 接口 重写 compareTo 方法
2.Comparator比较器,通过TreeSet构造函数传入一个Comparator比较器的实现类,来完成比较
当Comparable和Compartor同时存在时会优先使用Compartor比较器,在工作中推荐使用Compartor比较器

原创粉丝点击