一,集合
定义:位于Java.util包下的一些常用接口和类。是Java里提供的一种容器,用于存储多个数据。
★,数组与集合区别:
1,数组长度是固定的。集合的长度是可变的
2,数组中存储数据类型是同一类,常用来存储基本数据类型。集合存储的都是对象,对象类型可以不一致。
二,集合框架
Java SE 提供了各种API(方法,接口,规范等),使用API前,必须了解继承和接口架构,才能了解何时用哪个类。————最终目标:灵活运用。
集合按照存储结构可分两大类:
1,单列集合-------Java.util.Collection
2,双列集合-------Java.util.Map
三,Collection
定义:单列集合类的根接口,定义了所有的单列集合的共性方法。
作用:用于存储一系列符合某种规则的元素。有两个子接口:List 和 Set。
常用方法:
add(); 添加元素
clear(); 清空集合
remove(); 移除指定某个元素
contains(); 判断是否包含某元素
isEmpty(); 判断集合是否为空
size(); 集合大小,返回集合中元素个数
to Array(); 把集合元素存数组中,集合转数组
四,List
定义:List 接口,继承Collection,单列结合
特点:1,有序 2,有索引 3,可重复
常用方法:
set(int index,e element); 设置指定元素替换指定位置
get(int index); 获取下标元素
add(); 添加
remove(); 删除
1,ArrayList
List的实现类。连续存储方式。可看做长度可变的数组。在内存中分配连续的空间来存储数据。
特点:元素 查询快,增删慢。
方法:同List。
2,LinkedList
List的实现类。键表式存储方式。可看做手拉手丢手绢游戏。
FIrst、next、next、Last
特点:元素 增删快,查询慢。
方法:
addFirst(); 添加元素到首位
addLast(); 添加元素到末位
removeFirst(); 移除首位
removeLast(); 移除末位
getFirst(); 获取首位元素
getLast(); 获取末位元素
五,Set
定义:java.util包下,继承Collection,单列集合
特点:1,无序 2,无索引 3,不可重复,唯一
原理:Set 在添加对象时会先判断加入对象是否已存在,采用equals去比较两个对象。存在则不存储,不存在添加存储。
★,String系统类 重写了 equals 方法,比较两个对象String值是否相等。
1,HashSet
Set主要实现类。
存储原理:底层是一个哈希表结构,查询速度非常快
方法:同Collection
★,不能用普通for循环遍历,只能用增强for,和迭代器遍历获取数据。
2,LinkedHashSet
Set的实现类
特点:1,有序 2,有索引 3,唯一不重复
六,Iterator 迭代器
定义:接口经常遍历结合中的元素,JDK针对这种需求专门提供的一个接口。Java.util.Iterator>属于集合的一部分。
原理:有类似指针去依次指向元素,有元素就取出。
使用:Collection 中有 iterator();方法用来让每个集合获取迭代器。
//1,获取迭代器
Iterator<Person> it=hs.iterator();
//2,判断迭代器是否有下一个元素 it.has();
//3,循环如果有,就取出 it.next();
while (it.hasNext()){
Person p = (Person) it.next();
System.out.println(p);
}
七,Collections工具类
常用方法:
addAll(); 添加一系列元素
shuffle(); 打乱集合顺序
sort(); 默认升序排列
sort(参数); 按自定规则排序
public static void main(String[] args) {
//2 创建集合
List<Person> list =new ArrayList<>();
//3 添加对象
Collections.addAll(list,new Person("杨幂",30),new Person("刘诗诗",26),new Person("刘亦菲",28));
//4 遍历
Iterator it=list.iterator();
while (it.hasNext()){
Person per=(Person) it.next();
System.out.println(per);
}
//5 打乱顺序
Collections.shuffle(list);
System.out.println(list);
//6 年龄大到小
Collections.sort(list, new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {return o2.getAge()-o1.getAge(); }
});
System.out.println(list);
}