本课目标
掌握 Map 集合存储数据的用法
理解泛型的相关概念
掌握泛型集合的用法
掌握 Collections 的用法
一、Map接口
- Map 接口存储一组键值对象,提供 Key 到 value 的映射
- Map 接口常用的实现类 HashMap
- HashMap 类的特点:1.不保证映射的顺序,特别是不保证顺序恒久不变
2.数据添加到HashMap集合后,所有数据的数据类型将转换为Object类型,所以从其中获取数据时需要进行强制类型转换。
Map接口的常用方法(非全部)
遍历HashMap 的键值和值集的方法:
增强型for循环、迭代器Iterator 、遍历值集
public class Penguin {
public static void main(String[] args) {
Map<String,String> map = new HashMap<>();
map.put("亚亚","Q妹");
map.put("菲菲","Q妹");
map.put("欧欧","Q仔");
map.put("美美","Q妹");
//增强型for循环
Set<String > keys = map.keySet();
for (String key : keys) {
System.out.println(key + "\t\t" + map.get(key));
}
System.out.println();
for (Map.Entry<String, String> entry : map.entrySet()) {
String k = entry.getKey();
String v = entry.getValue();
System.out.println(k + "\t\t" + v);
}
System.out.println("******************************");
//Lambda表达式
map.forEach((k,v)-> {
System.out.println(k +"\t\t"+ v);
});
//迭代器Iterator
Set<String > a = map.keySet();
Iterator<String> iterator = a.iterator();
while (iterator.hasNext()) {
System.out.println(map.get(iterator.next()) );
}
}
}
增强型for循环
Set<String > keys = map.keySet();
for (String key : keys) {
System.out.println(key + "\t\t" + map.get(key));
}
迭代器Iterator
Set<String > a = map.keySet();
Iterator<String> iterator = a.iterator();
while (iterator.hasNext()) {
System.out.println(map.get(iterator.next()) );
}
Lambda 表达式
map.forEach((k,v)-> {
System.out.println(k +"\t\t"+ v);
});
二、泛型
- 泛型的本质是参数化类型:将所操作的数据类型指定为一个参数,使代码可以应用于多种类型
- 泛型的定义:将对象的类型作为参数,指定到其他类或者方法上,从而保证类型转换的安全性和稳定性
- 泛型的优点:所有强制转换都是自动和隐式进行的,安全简单
提高了代码的重用率
- 泛型集合的优点:存储数据时进行严格类型审查,确保只有合适类型的对象才能存储在集合中
从集合中检索对象时,减少了强制类型转换
三、Collections 算法类
- Collections 类是Java提供的一个集合操作工具类
- Collections 类定义了一系列用于操作集合的静态方法,用于实现对集合元素的排查、查找和替换等操作
- Collections 和 Collection 是不同的,前者是集合的操作类,后者是集合接口
1.Collections 常用方法
- sort() :排序
- binarySearch() :查找
- max() / min() :查找最大/最小值