一、集合的理解
1. 概念:一种操作便利的对象容器,存储多个对象,多数情况下可替代数组
2. 位置:所有集合的接口和相关实现类都是位于 java.util 包
3. 每一种集合的学习都是从以下方面学习: 集合接口的特点 集合接口中方法 集合接口对应的实现类 集合的遍历 方式
4. 集合的分类: Collection List Set Map集合
二、Collection集合体系
1. 父接口Collection
(1) 特点:存储多个Object对象
(2) 常见的方法:
add(Object o):往集合中添加对象
int size():获取集合中元素的个数
remove(Object o):将o对象从当前集合中删除
(3) 实现类:详见子接口
(4) 遍历:详见子接口
2. 子接口:List集合
(1) 特点:存储多个Object对象,有序、有下标(0.1.2...)、元素可以重复
(2) 方法:
add(Object o):往集合中添加对象
get(int i):根据下标获取对应位置的集合元素
void add(int index, Object o) //在index位置插入对象
boolean addAll(int index,Collection c):将c中元素一次性插入到集合中指定下标
Object get(int index) //返回集合中指定位置的元素
Object remove(int index) //移除index位置上的元素
Object set(int index, Object element) //替换index位置上的元素
List subList(int fromIndex, int toIndex) //返回集合中指定部分的元素
(3) 实现类:ArrayList
(4) 遍历:
a. 下标遍历:
for(int i=0;i<集合名.size();i++){
// 根据下标获取对应的元素:get方法
}
b. forEach遍历:
for(数据类型 变量名:集合名){
//通过变量获取对应的数据
}
(5) 不同实现类的区别 【面试题目】
ArrayList:底层用数组实现,查询快,增删慢
JDK1.2提供,线程不安全,并发效率高。
Vector: 底层用数组实现,查询快,增删慢
JDK1.0提供,线程安全,并发效率低。
LinkedList: 底层用链表实现,查询慢,增删快
JDK1.2提供,线程不安全,并发效率快。
3. 子接口:Set集合
(1) 特点:用于存放任意Object对象,无序、无下标、元素不能重复(内容)
(2) 方法:全部继承于 Collection接口中
add(o); // 往集合中添加元素
(3) 实现类:HashSet
注意:为了保证存储在HashSet集合中元素内容不重复, 需要在存储对象所在的类中覆盖hashCode和equals方法
(4) 遍历:forEach
三、Map集合体系
1. 特点:存储键值对(key-value),键:无序、无下标、元素不可以重复;值:无序、无下标、元素可以重复
2. 方法:
3. 实现类:HashMap
4. 遍历:
(1) 键遍历:
Set keys= stus.keySet(); // 获取所有的键
// 通过 遍历 set集合获取每一个键
for(String key:keys){
Student stu = stus.get(key); // 通过键获取对应的值
}
(2) 值遍历:
Collection cs= stus.values(); // 获取所有的值
// 通过遍历获取 集合中每个值
for(Student stu:cs){
System.out.println(stu);
}
(3) 键值对遍历:
Set> kvs=stus.entrySet(); // 获取所有的键值对
// 获取每个键值对
for(Map.Entry kv:kvs){
// 通过操作 Entry 获取对应的键 和 值
String s1=kv.getKey();
Student stu=kv.getValue();
System.out.println(s1+"-----"+stu);
}
5. 不同的实现类:
(1) HashMap:JDK1.2版本,线程不安全,运行效率快 ;允许用null 作为key或是value。
(2) Hashtable:JDK1.0版本,线程安全,并发效率慢;不允许null作为key或是value
(3) LinkedHashMap:HashMap的子类,按照元素添加的顺序进行存储
(4) Properties:Hashtable的子类,要求key和value都是String。通常用于配置文件的读取
(5) TreeMap :实现了SortedMap接口(是Map的子接口),可以对key自动排序。