预警:进入暑期培训的博主即将高产似母猪,敬请博友期待。
1、给类添加构造方法
alt + shift + s
选择Generate Construct using Fields
2、map两种遍历方法
方法一:
获取所有的key值,根据key值获取value值
代码实现:
Set keySet = map.keySet();
for(Object key : keySet) {
System.out.println(key + "----" + map.get(key));
}
//keySet:将所有的key值转化为Set
注:在HashMap里每一个key和value都是对应一个实体,数组里存储的就是这些实体
方法二:
通过将所有的数据转换为Entry对应的Set集合进行遍历
Set<Map.Entry> entrySet= map.entrySet();
for(Map.Entry entry : entrySet) {
System.out.println(entry.getKey() + "---->" + entry.getValue());
}
3、使用泛型
代码实现:
public static void MapDemo1() {
Map<String, Student> map = new HashMap<String, Student>();
map.put("20181602", new Student("小强","20181602", 99));
Set<Map.Entry<String, Student>> entry = map.entrySet();
for(Map.Entry<String, Student> entrySet :entry) {
String stuNo = entrySet.getKey();
Student stu = entrySet.getValue();
}
为什么entrySet有getKey和getValue方法而entry却没有?
写泛型的好处:
免去了类型转化的麻烦(如果不写泛型则需要用Object类型的变量来接收getKey和getValue传来的数据,如果想转化成自己想要的类型则需要用强制类型转化)
4、Entry是Map的内部接口而非子接口
5、接口是不能被实例化的但Set集合能声明接口类型的数据,在实际存储中,这个声明表示只要你是这个接口的实现类都可以存进去的,Set里存储的数据必须出Map.Entry的实现类实例化出来的对象
Set<Map.Entry<String, Student>> entry = map.entrySet();
return (es = entrySet) == null ? (entrySet = new EntrySet()) : es;
entrySet返回的是一个Set的实现类