对序列化的思考
implements Serializable
public interface Serializable
类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。
若该类没实现 Serializable 接口, 则在使用时会抛出 java.io.NotSerializableException
常用方法
找出最大值 和 最小值
现给出一串数据(313, 89, 123, 323, 313, 15, 90, 56, 39)求出最大值和最小值并输出。
方法一:排序后输出
1 2 3
| Arrays.sort(data); System.out.println(data[0]); System.out.println(data[data.length - 1]);
|
方法二:转成流后获取 max 和 min
1 2
| System.out.println(Arrays.stream(data).min().getAsInt()); System.out.println(Arrays.stream(data).max().getAsInt());
|
18 位身份证号加权校验方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
private static boolean judgeIdCard(final String idCardNo) { log.info("------18位身份证号加权校验方法---入参身份证号:{}------", idCardNo); try { if (org.apache.logging.log4j.util.Strings.isNotBlank(idCardNo)) { int idCardNoLength = idCardNo.trim().length(); if (idCardNoLength == 18) { String[] nums = new String[idCardNoLength]; for (int i = 0; i < idCardNoLength; i++) { nums[i] = idCardNo.substring(i, i + 1); } Integer[] ints = new Integer[17]; for (int i = 0; i < nums.length - 1; i++) { ints[i] = Integer.valueOf(nums[i]); } int S = ints[0] * 7 + ints[1] * 9 + ints[2] * 10 + ints[3] * 5 + ints[4] * 8 + ints[5] * 4 + ints[6] * 2 + ints[7] + ints[8] * 6 + ints[9] * 3 + ints[10] * 7 + ints[11] * 9 + ints[12] * 10 + ints[13] * 5 + ints[14] * 8 + ints[15] * 4 + ints[16] * 2; return nums[17].equals(Y[S % 11]); } } return false; } catch (Exception e) { log.error("------18位身份证号加权校验方法---身份证号:" + idCardNo + "---发生异常:", e); return false; } }
private static final String[] Y = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"};
|
参考资料
Guava - ImportNew 专注于 Java 技术分享。
http://www.importnew.com/tag/guava