jdk8
咸鱼最牛逼
这个作者很懒,什么都没留下…
展开
-
八、目标类型转换
/** * 设置对象中指定的属性值 * @param clazz 对象对应的类 * @param propertyName 属性名 * @param value 属性值 */ public static void setPropertyValue(Class<?> clazz, String propertyName, S...原创 2019-12-05 21:51:57 · 237 阅读 · 0 评论 -
七、使用 LinkedHashMap 实现 Lru
/** * 获取 近期最少使用的项 * 原理:在 LinkedHashMap 中获取对象时,会将对象移动到队列尾部,这样在队列头部的就是最近最少使用的项(PS:需要配合 * access-order 为 true) * @param size map 大小 * @return 近期最少使用的项 */ public Obje...原创 2019-11-27 21:45:09 · 149 阅读 · 0 评论 -
一、Java8 Date与LocalDate互转
Java8 日期时间API,新增了LocalDate、LocalDateTime、LocalTime等线程安全类:LocalDate:只有日期,诸如:2019-07-13LocalTime:只有时间,诸如:08:30LocalDateTime:日期+时间,诸如:2019-07-13 08:301.Date转换成LocalDate public static LocalDate ...原创 2019-07-13 09:38:07 · 35125 阅读 · 1 评论 -
二、使用 asSubclass() 方法,转换Class对象为其参数的子类
案例: public static Annotation getAnnotation(AnnotatedElement element, String annotationTypeName) { Class<?> annotationType = null; try { annotationType = Class.for...原创 2019-08-20 10:28:42 · 415 阅读 · 0 评论 -
四、jdk8以后的随机数生成器 ThreadLocalRandom 和 SplittableRandom
从 Java 7 开始,就不应该再使用 Random 了。现在选择随机数生成器,大多使用 ThreadLocalRandom 。它会产生更高质量的随机数,并且速度非常快。 而对于 Fork Join Pool 和并行 Stream,则使用 SplittableRandom。 // ThreadLocalRandom ThreadLocalRandom.cur...原创 2019-08-24 19:53:28 · 5826 阅读 · 0 评论 -
五、带有小数点进行精确计算时,请选择 BigDecimal,而不是 double 或者 float
1、double 或者 float 存在的精度问题当计算 1.03 - 0.42 时,按照常规得出的答案应该是 0.61System.out.println(1.03 - 0.42 );但是实际结果去确实 0.61000000000000010.6100000000000001这显然不是我们需要的结果。若需要对带有小数点的数值进行精确计算,则需要使用 BigDecimal。2、使用...原创 2019-08-24 20:14:21 · 511 阅读 · 0 评论 -
三、Stream流式编程
一、基础知识Stream其实就是一个高级的迭代器,它不是一个数据结构,不是一个集合,不会存放数据。它只关注怎么高效处理数据,把数据放入一个流水线中处理。1、内部迭代和外部迭代(1)外部迭代就是平时我们在对集合或者数组中的数据进行处理时,比如我们求一个数组中所有数字的和,那么我们需要先定义一个外部变量SUM,然后遍历数据,取出数组中的值加在SUM上面。public static void ...原创 2019-08-21 11:26:39 · 933 阅读 · 0 评论 -
六、域的延迟初始化
一、基本概念延迟初始化:是指延迟到需要域的值时才将他初始化的行为。一般有两种对象需要延迟初始化:静态域和实例域。二、具体操作1、静态域若出于性能考虑而需要对静态域使用延迟初始化,就使用 lazy initialization holder class 模式。这种模式保证了类要到被用到的时候才会初始化。 private static FieldType getFeild() { ...原创 2019-08-25 21:23:54 · 253 阅读 · 0 评论