一、集合
1. 概念:一种操作便利的对象容器,存储多个对象,多数情况下可替代数组。
2. 位置:所有集合的接口和相关实现类都是位于 java.util 包中
3. 每一种集合的学习都是从以下方面学习: 集合接口的特点 集合接口中方法 集合接口对应的实现类 集合的遍历 方式
4. 集合分类:
Collection集合
List集合
Set集合
Map集合
Map
二、Collection集合体系
1. 父接口:Collection接口
(1) Collection接口的特点:存储对象,即存储数据类型Object
(2) Collection接口中的方法:
boolean add(Object obj) : 添加一个对象。 【重点】
int size() :返回此集合中的元素个数。 【重点】
void clear() :清空此集合中的所有对象。
boolean contains(Object o) : 检查此集合中是否包含o对象
boolean isEmpty() :判断此集合是否为空
boolean remove(Object o) :在此集合中移除o对象
Object[] toArray() :将此集合转换成数组。
(3) 实现类:详见子接口
(4) 遍历:详见子接口
2. 子接口:List
(1) List接口的特点:存储Object类型的对象,有序、有下标,元素可以重复。
List下标范围是:0 - 集合元素个数-1 (即 0 - size-1)
(2) 常见的方法:
boolean add(Object obj) : 添加一个对象。 【重点】
Object get(int index) //返回集合中指定位置的元素
void add(int index, Object o) //在index位置插入对象
boolean addAll(int index,Collection c):将c中元素一次性插入到集合中指定下标
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<list.size();i++){
System.out.println(list.get(i));
}
b. forEach遍历:
for(数据类型 变量名:集合名){
// 可以通过变量名操作集合数据
}
(5) 泛型集合:强制要求集合中数据类型统一
ArrayList list = new ArrayList();
a. 前后数据类型一致
b. 基本数据类型的泛型需要使用对应的包装类
(6) 不同实现类的区别:
ArrayList:
底层用数组实现,查询快,增删慢
JDK1.2提供,线程不安全,并发效率高。
Vector:
底层用数组实现,查询快,增删慢 JDK1.0提供,线程安全,并发效率低。
LinkedList:
底层用链表实现,查询慢,增删快
JDK1.2提供,线程不安全,并发效率快。
3. 子接口:Set
(1) Set接口的特点:用于存放任意Object对象,无序、无下标、元素不能重复(元素的内容不重复) (2) 方法:全部继承于 父接口 Collection
(3) 实现类:HashSet 注意:为了保证存储在 HashSet集合中对象内容不同,需要覆盖 hashCode和equals方法的
(4) 遍历方式:forEach
(5) 实现类:LinkedHashSet:按照元素添加的顺序进行,无下标、元素不可以重复(和HashSet一致)
三、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自动排序。
标签:遍历,int,Object,接口,集合,元素,第二章 From: https://blog.csdn.net/2301_81052610/article/details/143707910