1.集合概述
- 集合:集合是java中提供的一种容器,可以用来存储多个数据
集合和数组既然都是容器他们有什么区别?
-
数组的长度是固定的。集合的长度是可变的
int[] arr = new int[10]
Student[] arr = new Student[3];
ArrayList
-
数组存储的是同一类型的元素可以存储基本数据类型值,而对象的类型可以不一致。再开发中一般当对象多的时候,使用集合进行存储
2.集合框架
javase提供了满足各种需求的API。了解器继承与接口的操作架构
最底层的集合
学习集合的目标:1.会使用集合存储数据,会遍历集合,掌握每种集合的特性
-
Vector集合
-
ArrayList集合
-
LinkedList集合
-------------List接口------
- 有序的集合(存储和去除元素顺序相同)
- 允许存储重复的元素
- 有索引,可以使用普通的for循环遍历
- 继承:子类共性抽取,形成父类(接口)
-
TreeSet集合:无序的集合,存储和取出元素的顺序有可能不一致
-
HashSet集合:无序的集合,存储和取出元素的顺序有可能不一致
-
LinkedHashSet集合:有序的集合,存储和取出元素的顺序一致
------set接口------------
-
不允许存储重复的元素
-
没有索引(不能使用普通for循环遍历)
-
list和set的共同接口Collection接口
- 定义的是所有单列集合中共性的方法
- 所有的单列集合都可以使用共性的方法
- 没有带索引的方法
集合框架的学习方式:
- 学习顶层:学习顶层接口/抽象类中共性的方法,所有的子类都可以使用
- 使用底层:底层不是接口就是抽象类,无法创建对象使用。需要使用底层创建对象使用
List集合
有索引,可以存储重复元素,可以保证存取顺序
ArrayList,重点
底层是数组实现的 查询快,增删慢
LinkedList 次之
底层是链表实现的,查询慢,增删快
Vector 了解
Set集合
无索引、不可以存储重复元素、存取无序
HashSet 中点
底层是哈希表+红黑树实现的,五索引、不可以存储重复元素、存取无需
LinkedHashSet 次之
底层是Hash表+链表实现的、五索引、不可以存储重复元素,可以保证存取顺序
TreeSet 了解
底层是二叉树实现。一般用于排序
Collection集合常用方法
单列集合
- boolean add() 添加元素
- boolean remove() 移除元素
- boolean clear() 清空集合中的元素,但是不删除集合
- boolean contains 判断是否包含某个元素
- boolean isEmpty() 判断集合是否为空
- int size() 获取集合的长度
- Object[] toArray() 将集合转换为数组
public class test1{
public static void main(String[] args){
//创建顶层,使用底层 Collection为顶层,ArrayList为底层
Collection<String> coll = new ArrayList<>();
// boolean add方法
coll.add("hello");
coll.add("word");
coll.add("heima");
coll.add("java"); //[hello,word,heima,java]
// boolean remove删除
boolean result = coll.remove("hello");//[word,heima,java]
//删除添加等方法都是boolean类型,删除或添加成功返回true,失败返回false
// boolean clear
coll.clear();
System.out.println(coll);//[]
// boolean contain是否包含某个对象
boolean result = coll.contains("java")//true;
}
}
Iterator迭代器
概述:collection集合元素通用的获取方式。再去元素之前要先判断集合中有没有元素,继续再判断,如果还有就再取出来。一直把集合中所有元素都取出来。该过程称之为迭代
-
hasNext()集合中还有没有下一个元素,有返回true,没有返回false
-
next()取出集合中的下一个元素
/**
*有两个常用方法
*hasNext
*next
*/
public class Demo01Iterator{
Collection<String> = new ArrayList<>();
//集合中添加元素
coll.add("1");
coll.add("2");
coll.add("3");
coll.add("4");
coll.add("5");
/*
使用集合中的方法获取迭代器
*/
Iterator<String> it = coll.iterator();
boolean b = it.hasNext();
String s = it.next();
}
Iterator是一个接口,我们无法直接使用
需要使用Iterator接口的实现类对象
获取实现类的方式比较特殊
迭代器的使用步骤
- 使用集合中的芳芳iterator()获取是迭代器的实现类对象,使用Iterator接口接收(多态)
- 使用Iterator接口中的方法hasNext判断还有没有下一个元素
- 使用Iterator接口中的方法next取出集合中的下一个元素