集合的概念
对象的容器,定义了对多个对象进行操作的常用方法。可实现数组的 功能。
• 和数组区别:
• 数组长度固定,集合长度不固定
• 数组可以存储基本类型和引用类型,集合只能存储引用类型
• 位置:
java.util.*;
collection
特点:
代表一组任意类型的对象,无序、无下标、不能重复。
创建集合
Collection collection = new ArrayList();
常用方法
-
添加元素
collection.add();
-
删除元素
collection.remove();
collection.clear();
-
遍历元素(重点)
-
使用增强for(因为无下标)
for(Object object : collection){ }
-
使用迭代器
-
Iterator<String> is = names.iterator();
while(is.hasNext()) {
System.out.print(is.next() + "\t");
判断 collection.contains();
collection.isEmpty();
list子类
特点:有序有下标元素可重复。
创建集合和常用方法与collection相似。
返回子集合 :
sublist(x, y);
左闭右开
list的实现类:
1 ArrayList
ArrayList特点:可用于数据的查询,查询速度更快
可以理解为可变长数组
2LinkedList
LinkedList特点: 在列表的中间进行插入和删除效率更高
是一个双向链表
3Vector:
与ArrayList一样
相对而言安全性更高
但是效率不如ArrayList高
set集合
特点:无序、无下标、元素不可重复
方法:全部继承自Collection中的方法
增、删、遍历、判断与collection一致
HashSet
存储结构:哈希表(数组+链表+红黑树)
存储过程(重复依据)
- 根据hashCode计算保存的位置,如果位置为空,直接保存,若不为空,进行第二步
- 再执行equals方法,如果equals为true,则认为是重复,否则形成链表
新建集合 HashSet<String> hashSet = new HashSet<String>();
添加元素 hashSet.add( );
删除元素 hashSet.remove( );
遍历操作
增强for for( type type : hashSet)
TreeSet
特点
- 基于排列顺序实现元素不重复
- 实现SortedSet接口,对集合元素自动排序
- 元素对象的类型必须实现Comparable接口,指定排序规则
- 通过CompareTo方法确定是否为重复元素
存储结构:红黑树
创建集合 TreeSet<String> treeSet = new TreeSet<>()
添加元素 treeSet.add();
删除元素 treeSet.remove
Map接口
1. 用于存储任意键值对(key - value)
2. 键:无序、无下标、不允许重复(唯一)
3. 值:无序、无下标、允许重复
方法
1. V put(K key, V value) 将对象存到集合中,关联键值
2. Object get(Object key) 根据键获得对应的值
3. Set<K> 返回所有的Key
4. Collection<V> values() 返回包含所有值的Collection集合
5. Set<Map.Entry<K, V>> 键值匹配的Set集合
HashMap
存储结构:哈希表(数组+链表+红黑树)
使用key可使hashcode和equals作为重复
增、删、遍历、判断与上述一致
TreeMap
实现了SortedMap接口(是map的子接口),可以对key自动排序