(转)算法之优先队列 PriorityQueue解决Top K 问题

转自:https://www.jianshu.com/p/a4a1984fc4ff

解决方法:
维护一个大小为 K 的小顶堆,依次将数据放入堆中,当堆的大小满了的时候,只需要将堆顶元素与下一个数比较:如果大于堆顶元素,则将当前的堆顶元素抛弃,并将该元素插入堆中。遍历完全部数据,Top K 的元素也自然都在堆里面了。

阅读全文

Java中Lambda表达式解析

在大部分开发者看来,Lambda 表达式只是一种语法糖,简化了书写匿名内部类的写法。实际上Lambda表达式并不仅仅是匿名内部类的语法糖,JVM内部是通过invokedynamic指令来实现Lambda表达式的,与内部类的实现有很大的差异。本文主要记录lambda的实现原理。

一、函数式接口

众所周知Javascript具有一个强大的特性:闭包。Java中最接近闭包概念的东西就是lambda表达式了,而Lambda为Java添加了缺失函数式编程的特点。所以什么是函数是接口呢?

阅读全文

观《百鸟朝凤》有感

此刻子时,在朋友的推荐下看完了整部《百鸟朝凤》,看完之后我立马起身来打开电脑,心中思绪万千,准备写下来记录下来。自我观看了这么多电影以来,头一次是如此的触动,头一次留下来这样的眼泪,记得上一次很有感触还是因为《忠犬八公的故事》,那次泪水到了眼角,我忍住了,没有掉下来。这部电影实在是让我太感动了,我的泪水憋不下去了,源源不断地从眼眶里面流出来。我捂着自己的嘴巴,我怕自己嚎啕大哭起来,不停地抽泣。对一代匠人的崇敬之情,当然也让我想起来那个人……

阅读全文

Android骨架屏效果的实现与原理解析

大家在使用淘宝的时候,如下图所示有遇到这样的效果,其会只展示一部分骨架大致图,等数据加载完毕之后再展示真正的页面数据。与菊花图相比起来,这样的实现能更好的提升用户的体验,这种效果称做:Skeleton Screen Loading,中文叫做骨架屏,本文主要记录其实现过程。

阅读全文

Android 插件化之ClassLoader

插件化要解决的三个核心问题:类加载、资源加载、组件生命周期管理。

在Android插件化中其原理实际是 Java ClassLoader的原理,此博文主要对Android插件化中类加载中的DexClassLoader做总结,便于之后对Android插件化的理解学习。

阅读全文