## Map的四种遍历方式
package map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* @author: yongtong
* @Date: 2021/11/17 21:21:43
* @Description: map集合的四种遍历方式
*/
public class MapGather {
public static void main(String[] args) {
Map<Integer,String> map = new HashMap<Integer, String>();
map.put(1,"小子");
map.put(2,"小子");
map.put(3,"小子");
map.put(4,"小子");
/**
* 方式一
* 通过map.keySet()方法得到所有的间
* 再根据键得到值
*
* */
map.keySet().forEach(m->{
String result = map.get(m);
System.out.println(result);
});
/**
* 方式二
* 通过iterator结合Map.entrySet()方法迭代器遍历
*
*
*/
Iterator<Map.Entry<Integer, String>> iterator = map.entrySet().iterator();
while(iterator.hasNext()){
Map.Entry<Integer, String> next = iterator.next();
System.out.println(
"key:".concat(String.valueOf(next.getKey()))
.concat("------").concat("value:")
.concat(String.valueOf(next.getValue())));
}
/**
* 方式三
* 通过entrySet遍历适用于map容量较大时
* */
for ( Map.Entry<Integer, String> entry : map.entrySet() ) {
System.out.println("key:".concat(String.valueOf(entry.getKey()))
.concat("------").concat("value:")
.concat(String.valueOf(entry.getValue())));
}
/**
* 方式四:
* 通过map.values遍历但不能得到键
* */
map.values().forEach(s -> {
System.out.println("value:".concat(String.valueOf(s)));
});
}
}
序列化
将Java对象转化成以字节的形式表示,字节包含对象所有的信息,序列化后的对象可以持久化保存到磁盘或者数据库中,也可以用作网络传输,需要让实体类实现Serializable接口,序列化的目的就是为了实现反序列化
transient关键字
避免对象中的敏感数据被序列化,被transient修饰的成员变量的结果可以不被序列化保存,静态变量是天然不被序列化的
serialVersionUID
序列化的验证机制,在执行反序列化时会对比serialVersionUID的值以此来判断被序列化的对象时候属于其序列化对象的类版本
验证版本的一致性,可以避免对象的不一致
异常的分类及特点
一、编译时异常
发生在代码编译时
二、运行时异常
发生在代码运行时
三、自定义异常
可以根据需要自己定义异常(需要继承编译时异常或运行时异常)