本周做的内容比较少,折腾了一道 LRU 缓存的题目,顺便学习了相关的 LinkedHashMap 数据结构。除此之外看了一篇 RxJava 系列的文章。
Algorithm
题目描述
Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations:
get
andput
.Example:
> LRUCache cache = new LRUCache( 2 /* capacity */ );
>
> cache.put(1, 1);
> cache.put(2, 2);
> cache.get(1); // returns 1
> cache.put(3, 3); // evicts key 2
> cache.get(2); // returns -1 (not found)
> cache.put(4, 4); // evicts key 1
> cache.get(1); // returns -1 (not found)
> cache.get(3); // returns 3
> cache.get(4); // returns 4
>
设计一个 LRU 缓存,实现 get 以及 put 方法。
方法一
class LRUCache { |
方法二
class LRUMap<K, V> extends LinkedHashMap<K, V> { |
Review
-
本周阅读学习 RxJava系列的文章。主要讲述了判断类型的一些操作:
- All: 判断传递的所有参数是否满足一定条件,结果是 Bool 类型, 会返回该结果给 onNext() 方法;
- Amb:会忽略后发事件的 Observable 所有事件传递,而不忽略先发事件的 Observable 对象;
- Contains:判断传递的所有参数是否包含某一参数,结果是 Bool 类型, 会返回该结果给 onNext() 方法
- DefaultIfEmpty: 如果 Observable 对象没有传递任何事件或者数据,则传递该默认数据或事件;
- SequenceEqual:判断两个 Observable 对象传递的参数是否完全一致;
- SkipUntil: 忽略某个 Observable 对象传递的数据,直到另外一个 Observable 对象开始传数据;
- SkipWhile:当某条件为 true 时一直忽略传递的参数,直到它为 false 时才开始传递;
- TakeUntil:和 skipUtil 正好相反;
- takeWhile:和 SkipWhile 正好相反;
Exploring RxJava in Android — Conditional and Boolean Operators
Tips
-
actionbar 中设置自定义view:
actionbar.setDisplayShowCustomEnabled(true); // 显示自定义view
actionbar.setDisplayShowTitleEnabled(false); // 不显示原title
actionbar.setCustomView(view); -
bit.getPixel(x, y) 获取 bitmap 中某个像素点的颜色;