Collection
JDK不提供此接口的任何直接实现,它提供更具体的子接口实现
## Collection的基本功能
添加元素:
boolean add(Object e):
添加任何的引用类型元素
删除元素:
boolean remove(Object o):
删除指定的元素
void clear():
清空集合中的所有元素
判断功能:
boolean contains(Object o):
判断是否包含指定的元素,包含,返回true
boolean isEmpty():
判断集合是否为空,为空,返回true
获取功能:
int size():
获取集合中的元素数
Object[] toArray():
将集合转换成数组遍历
## Collection集合的高级功能
boolean addAll(Collection c):添加一个集合的元素
boolean removeAll(Collection c):删除一个集合的元素
boolean containsAll(Collection c):包含一个集合中的所有元素才返回true
boolean retainAll(Collection c):集合的交集(A集合对B集合取交集,交集的元素给A集合,返回值表达的意思:A集合的元素前后是否发生变化,如果没有变化,返回false,如果有变化,返回true)
使用Collection集合存储字符串并遍历
1) toArray()方法是将集合转换成数组(很少使用)
2) 集合的遍历使用迭代器遍历:集合的专有遍历方式
Iterator<Object> iterator
List
List集合是Collection集合的子接口
特点:1)有序,存储和取出一致
2)该集合可以允许元素重复
## List集合的特有功能
添加元素:
void add(int index,Object element):
在指定位置添加元素
删除元素:
Object remove(int index):
删除指定位置处的元素,返回该元素
获取功能:
Object get(int index):
根据索引值获取元素
修改元素:
Object set(int index,Object element):
在指定位置处使用新元素去替换该位置处的元
## List集合的专有遍历方式:列表迭代器
ListIterator ListIterator()
ListIterator接口的功能:
正向遍历:
boolean hasNext():判断是否存在下一个元素
Object next():获取下一个元素
逆向遍历:
boolean hasPrevious():判断是否存在前一个元素
Object previous():获取前一个元素
列表迭代器中有一个add(Object e):可以使用迭代器去添加元素
泛型
泛型:JDK5提供的新特性,应用在类上,方法上,接口上
格式:<引用数据类型>
泛型的好处:1) 将运行时期异常提前到了编译时期
2) 解决了黄色警告线的问题
3) 避免了强制类型转换
4) 提供程序的安全性
泛型的高级:
通配符
<?>:表示可以存储任意的Java类型和以及Object类型
<? extends E>: 向下限定,可以存储E类型以及它的子类
<? super E>: 向上限定,可以存储E类以及它的父类
List接口下面的三个子实现类各自的特点
ArrayList: 大小可变的数组实现,底层数据结构是数组,查询快,增删满,线程角度:线程是不安全的,不同步的,单线程中执行效率高
使用ArrayList来存储自定义对象并遍历,四种方式:
1) Collection的迭代器
2) List的列表迭代器
3) Object get(int index)和size():普通for循环
4) 增强for循环
格式:
for(引用数据类型 变量名 : 集合对象名称){
输出变量名;
}
LinkedList:类似于栈结构的特点:先进后出,底层数据结构是链接列表实现的,查询慢,增删快,线程角度:线程不安全的,不同步,执行侠侣高。
特有功能:
添加:
public void addFirst(Object e):添加元素到列表开头
public void addLast(Object e):添加元素到末尾
删除:
public Object removeFirst():移除此列表的开头元素
public Object removeLast():移除末尾的元素
获取:
public Object getFirst():获取列表开头
public Object getLast():获取列表末尾
Vector:底层数据结构是一种对象数组,查询快,增删慢,线程角度:线程安全的类,同步,执行效率低。考虑多线程环境,使用Vector集合
特有功能:
public Enumeration<E> elements():
获取Vector集合的迭代器
Enumeartion接口里面有两个抽象方法:
boolean hasMoreElements():判断是否包含很多的元素
Object nextElement():获取下一个元素
public Object elementAt(int index):获取指定位置处的组件
Set
Set集合是Collection的子接口,该集合中的元素是唯一的,无序的
HashSet和TreeSet是Set接口下的子实现类
HashSet:无序性:存储和取出不一致
唯一性:底层哈希表能够保证元素的唯一
依赖于:public int hashCode()
public boolean equals(Object e)
一般:Set<xx> set = new HashSet<xx>;
TreeSet:基于TreeMap的一个红黑树结构,其实就是一种二叉树结构
根据其构造方法,有两种排序方法:
1) 自然顺序排序: Comprable
2) 选择器排序: Comparator
Map集合
Java提供了Map<K,V>:键映射到值,一个键对应一个值,键不能重复,Map集合针对键有效,跟值无关
Map集合和Collection集合的区别:
Collection:是一个单例集合,只能存储一种引用类型
Map:是一个双列集合,能够存储两种引用类型(键和值:是一种键值对存在)
Map集合的功能:
添加功能:
V put(K key,V value):给Map集合添加键值对
删除:
V remove(Object key):删除指定的键,返回对应的值
判断功能:
boolean containsKey(Object key)
boolean containsValue(Object value)
boolean isEmpty()
获取功能:
int size():获取Map集合的键值对的个数
常用的遍历:
方式1:
V get(Object key):通过键获取值
Set<K> keySet():获取Map集合中所有的键的集合
1) 创建Map集合对象;
2) 添加元素
3) 获取所有的键的集合
4) 增强for循环
方式2:
Set<Map.Entry<K,V>> entrySet()
Map.Entry<K,V>:接口:代表键值对对象
K getKey(): 获取键
V getValue(): 获取值
1) 创建Map集合对象;
2) 添加元素
3) 获取所有的键值对对象
4) 增强for循环