java集合框架

一、集合的概念

对象的容器,用来存放数据的容器,定义了对多个对象进行操作的常用方法。可实现数组的功能。

集合与数值的区别:

  • 数组长度固定,集合长度不固定
  • 数组中能存储基本数据类型和引用数据类型,而集合只能存储引用数据类型

二、Collection体系集合

所有单列集合的父接口。
特点:代表一组任意类型的对象,无序、无下标。
常用共性方法:

方法描述
boolean add(Object obj)添加一个对象数据
boolean addAll(Collection c)将集合中的所有对象添加到此集合中
void clear()清空此集合中的所有对象
boolean contains(Object obj)检查此集合中是否包含o对象
boolean equals(Object o)比较此集合 是否与指定对象相等
boolean isEmpty()判断此集合是否为空
boolean remove(Object o)在此集合中移除o对象
is size()返回此集合中的元素个数
Object[] toArray()将此集合转换为数组

图例:
在这里插入图片描述
1.List子接口:
特点:元素有序,并且有下标,可以有重复值.
实现类:
1.ArrayList集合
特点:底层数组结构,查询快,增删慢,效率高,线程不安全
常用方法:

方法描述
void add(int index, Object o)在index位置插入对象o。
boolean addAll(int index, Collection c)将一个集合中的元素添加到此集合中的index位置。
Object get(int index)返回集合中指定位置的元素
List subList(int fromIndex, int toIndex)返回fromIndex和toIndex之间的集合元素

优点:
ArrayList是实现了基于动态数组的数据结构,因为地址连续,一旦数据存储好了,查询操作效率会比较高。(内存中开辟的是连续的空间)
缺点:
因为地址连续, ArrayList要移动数据,所以插入和删除操作效率比较低。
2.LinkedList集合:
特点:底层是链表结构,增删快,查询慢,线程不安全.
常有特有方法:

方法描述
void addFirst(E e)将指定元素插入此列表的开头。
void addLast(E e)将指定元素添加到此列表的结尾。
E getFirst()返回此列表的第一个元素。
E getLast()返回此列表的最后一个元素。

优点:
LinkedList基于链表的数据结构,地址是任意的,所以在开辟内存空间的时候不需要等一个连续的地址,对于新增和删除操作add和remove,LinedList比较占优势。LinkedList 适用于要头尾操作或插入指定位置的场景.
缺点:
因为LinkedList要移动指针,所以查询操作性能比较低。
3.Vector集合:
特点:数组结构实现,查询快、增删慢,线程安全,运行效率比ArrayList较慢.
4.ArrayList和LinkedList区别:

  • ArrayList存储结构是数据,查找、遍历效率高。
  • LinkedList存储结构是双向链表,删除、添加效率高。

2.Set集合:
特点:元素无序,无下标,元素不可重复
遍历方式:a.使用foreach循环遍历。 b.使用Iterator迭代器
实现类:
1.HashSet:
特点:
底层数据结构采用哈希表实现,元素无序且唯一,线程不安全,效率高,可以存储null元素,元素的唯一性是靠所存储元素类型是否重写hashCode()和equals()方法来保证的,如果没有重写这两个方法,则无法保证元素的唯一性。

  • 基于HashCode实现元素不重复。
  • 当存入元素的哈希码相同时,会调用==或equals进行确认,结果为true,拒绝后者存入。
    注意方向:
  • 根据hashcode计算保存的位置,如果此位置为空,则直接保存,如果不为空执行第二步。
  • 再执行equals方法,如果equals方法为true,则认为是重复,否则,形成链表。
  • JDK1.8引入红黑树,提高效率。

2.LinkedHashSet
链表实现的HashSet,按照链表进行存储,即可保留元素的插入顺序,线程不安全
3.TreeSet
底层数组结构采用二叉树来实现,实现了SortedSet接口,对集合元素自动排序。
排序方法:

  • 存储元素对象实现Comparable接口,重写compareTo()方法.(自然排序)
  • TreeSet初始化时候传入一个实现Comparator接口的比较器对象,或者采用匿名内部类的方式new一个Comparator对象,重写里面的compare()方法;(比较器排序).

三、Map

Map集合用于保存映射关系的数据,即保存的都是键值对数据(key和value)其中key不可重复,value可重复,可通过key找到对应的value值.
关系示意图:
在这里插入图片描述
1.HashMap
线程不安全,运行效率快。允许用null 作为key或是value。
2.TreeMap
实现了SortedMap接口(Map的子接口),可以对key自动排序,Key需实现Comparable接口。
3.Hashtable
线程安全,运行效率慢;不允许null作为key或是value。
4.Properties :
Hashtable的子类,要求key和value都是String。通常用于配置文件的读取。(配置文件)

四、小结

Array,联想下标。底层数据结构是数组,查询快,增删慢,
Linked,联想两个特殊方法first,last。底层数据结构是链表,查询慢,增删快。
Hash,联想到两个重写方法hashCode,equals.底层数据结构是哈希表。
Tree,底层数据结构是二叉树。两种方式排序:Comparable,Comparator。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值