1、java集合框架所提供的接口和类全部在java.util包中;
2、集合框架是为表示和操作集合而规定的一种统一的标准体系结构;
3、集合框架包含三大块内容:对外接口,接口实现,对集合运算的算法;
4、集合框架共有三大类接口:List,Set,Map,其中List和Set是Collection的子接口;
5、Collection存储一组允许重复、无序的对象;
Set接口继承Collection接口,存储一组不允许重复、无序的对象;
List接口继承Collection接口,存储一组允许重复,有序的对象;
Map接口存储一组成对的键-值对象,提供key-value的映射,其中,key不允许重复,value允许重复,都不要求有序;
Iterator接口是负责定义访问和遍历元素的接口;
6、实现List接口的常用类有 ArrayList 和 LinkedList;
ArrayList对数组进行了封装,实现了长度可变的数组,它的优点在于遍历和随机访问元素的效率比较高;
LinkedList采用链表存储方式,优点在于插入、删除时效率比较高;
7、数组线性表类ArrayList包含的方法:
boolean add(Object o):在列表末尾顺序添加元素,起始索引位置从0开始;
void add(int index,Object o):在指定索引位置添加元素,原索引位置的元素及其后面的元素依次后移;
Object set(int index,Object o):将指定索引位置的对象修改为o;
int size():返回列表中的元素个数;
Object get(int index):返回制定位置处的元素;
boolean contains(Object o):判断列表中是否存在指定元素;
boolean remove(Object o):从列表中删除元素;
Object remove(int index):从列表中删除制定位置的元素,其索引位置从0开始;
package 集合框架;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
/**
* 创建宠物对象
*/
Pet pet1 = new Dog("欢欢", "拉布拉多");
Pet pet2 = new Dog("大大", "萨摩耶");
Pet pet3 = new Dog("跳跳", "柯基");
Pet pet4 = new Dog("汤圆", "京巴");
// 创建集合保存信息
List<Pet> list = new ArrayList<Pet>();
// 将对象添加到集合中
list.add(pet1);
list.add(pet2);
list.add(pet3);
list.add(0, pet4);
// 输出删除之前集合中原始存在的元素数量,并且遍历它们
System.out.println("删除之前共有:" + list.size() + "条狗狗!");
System.out.println("分别是:");
for (int i = 0; i < list.size(); i++) {
Pet pet = list.get(i);
System.out.println(pet.getName() + "," + pet.getStrain());
}
// 删除集合中下标为0的对象和pet2对象
list.remove(0);
list.remove(pet2);
// 显示删除之后集合中剩余的元素数量,并且遍历它们
System.out.println("删除之后还有:" + list.size() + "条狗狗!");
System.out.println("分别是:");
for (int i = 0; i < list.size(); i++) {
Pet pet = list.get(i);
System.out.println(pet.getName() + "," + pet.getStrain());
}
// 查询集合中是否包含pet4对象的信息
if (list.contains(pet4)) {
System.out.println("集合中包含pet1的信息!");
} else {
System.out.println("集合中不包含pet1的信息!");
}
/**
* 输出信息:
* 删除之前共有:4条狗狗!
* 分别是:
* 汤圆,京巴
* 欢欢,拉布拉多
* 大大,萨摩耶
* 跳跳,柯基
* 删除之后还有:2条狗狗!
* 分别是:
* 欢欢,拉布拉多
* 跳跳,柯基
* 集合中不包含pet1的信息!
*/
}
}
8、链表类Link