概念:集合框架是为表示和操作集合而规定的一种统一的标准体系结构
主要包括:接口,实现,算法
-
Collection接口:存储允许重复,无序的对象
List(继承Collection接口)
用来存储允许重复,有序(以元素插入的顺序来放置)的对象
1.ArrayList
长度可变的数组,存储方式与数组相同,遍历元素和随机访问元素的效率比较高
例:List a =new ArrayList(); / ArrayList a=new ArrayList();
常见方法:
方法名称 | 说明 |
---|---|
boolean add(Object o); | 依次插入元素,索引从0开始 |
void add(int index, Object o) | 在指定位置添加元素 |
int size() | 获取集合的长度/返回列表中元素的个数 |
Object get (int index) | 查看指定索引的元素,使用前需要进行强制转换 |
boolean contains(Object o) | 判断是否存在指定元素 |
boolean remove(Object o) | 移除指定元素 |
Object remove(int index) | 移除指定索引的元素 |
2.LinkedList
采用链表存储方式,插入,删除元素时效率比较高
例:List a=new LinkedList(); / LinkedList a=new LinkedList();
常见方法:
方法名称 | 说明 |
---|---|
void addFirst(Object o); | 列表首部添加元素 |
void addLast(Object o) | 列表尾部添加元素 |
int size() | 获取集合的长度/返回列表中元素的个数 |
Object getFirst() | 返回列表中的第一个元素 |
Object getLast() | 返回列表中的最后一个元素 |
Object removeFirst() | 删除并返回列表中的第一个元素 |
Object removeLast() | 删除并返回列表中的最后一个元素 |
Map
存储键-值映射的数据,无序,,键(key)的值不可以重复,value的值可以重复
HashMap
例:Map countries =new HashMap();
方法名称 | 说明 |
---|---|
Object put(Object key, Object value) | "键--值对"的方式进行存储,,如果添加重复的键,后添加的数据会吧前面的覆盖掉 |
Object get(Object key) | 根据键返回相关联的值,若不存在指定的键,返回null |
Object remove(Object key) | 删除指定的键映射的 键--值对 |
int size() | 返回元素的个数 |
Set keySet() | 返回键的集合 |
Collection values () | 返回值的集合 |
boolean containsKey(Object key) | 是否存在指定的键,true/false |
boolean isEmpty() | 键值对为null,,返回true |
void clear() | 清空所有键值对 |
迭代器Iterator
为实现集合的遍历
Iterator 接口的方法实现遍历:
-
boolean hasNext():判断是否存在另一个可访问的元素
-
Object Next():返回要访问的下一个元素
例:
/**
* 使用迭代器输出狗狗的信息
*/
Set keys=dogs.keySet(); //取出key集合
Iterator it=keys.iterator(); //获取迭代器iterator对象
while (it.hasNext()) {
String key=(String) it.next();//取
Dog dog=(Dog) dogs.get(key);//根据key取出相应的值
System.out.println(key+" "+dog.getStrain());
}
foreach
声明:for(元素类型 变量名 : 集合对象)
例:
for (Object key : keys) {
Dog dog=(Dog) dogs.get(key);
System.out.println(key+" "+dog.getStrain());
}
泛型集合
创建集合对象时指定集合中的元素类型,在集合中取出元素时无需进行强制转换,避免了类转换异常(ClassCastException)
例:List<Dog> dogs=new ArrayList<Dog>();