概述
一方面,为了方便对多个对象的操作,就要对对象进行存储。另一方面,使用Array存储对象方面具有一些弊端。而Java集合就像一种容器,可以动态地把多个对象的引用放入容器中。
- 数组在内存存储方面的特点:
- 初始化后长度确定。
- 数组声明的类型,决定了进行元素初始化时的类型。
- 数组在存储数据方面的弊端:
- 初始化后长度固定,不方便扩展。
- 数组提供的属性和方法少,不便于进行增删插入,且效率不高,同时无法直接获取存储元素的个数
- 数组存储的数据是有序的、可重复。无法满足无序、不可重复的需求。
分类
Java集合可以分为Collection和Map两种体系:
- Collection:单列数据,定义了存取一组对象的方法的集合
- List:元素有序、可重复的集合
- ArrayList、LinkedList、Vector
- Set:元素无需、不可重复的集合
- HashSet、LinkedHashSet、TreeSet
- List:元素有序、可重复的集合
- Map:双列数据,保存具有映射关系“key-value”对的集合
- HashMap、LinkedHashMap、TreeMap、HashTable、Properties
Collection方法
向collection接口的实现类对象中添加数据obj,要求obj所在的类必须重写equals方法
1.添加
- add(Object obj)
- addAll(Collection coll)
2.获取有效元素个数
- int size()
3.清空合集
- void clear()
4.是否是空合集
- boolean isEmpty()
5.是否包含某个元素
- boolean contains(Object obj) 通过元素的equals方法来判断是否是同一个对象。
- boolean containsAll(Collection coll) 也是调用元素的equals方法来比较,拿两个集合的元素挨个比较。即拿当前集合与coll求差集。
6.删除
- boolean remove(Object obj) 通过元素的equals方法判断是否要删除那个元素,只会删除找到的第一个函数。
- boolean removeAll(Collection coll) 取当前集合的差集
7.取两个合集的交集
- boolean retainAll(Collection c) 把交集的结果存在当前集合中,不影响c
8.集合是否相等
- boolean equals(Object obj)
9.转成对象数组
- Object[] toArray()
10.获取集合对象的哈希值
- hashCode()
11.遍历
- iterator() 返回迭代器对象,用于集合遍历。