参考Android达摩院的ArrayMap文章。
ArrayMap是Android中存储的一个数据结构。是Android专门针对内存优化而设计的,用于取代Java API中的HashMap。为了进一步优化key是int类型的Map,Android再次提供了效率更高的数据结构SparseArray,可避免自动装箱过程。对于key为其他类型则使用ArrayMap。HashMap的get和put方法的时间复杂度是O(1)是以牺牲大量内存为代价而才得以实现的,SparseArray和ArrayMap性能略低于HashMap,但是更节省内存,用在移动端是权衡的结果。
java反射机制学习
一、反射机制的定义
JAVA反射机制是在运行状态_中,对于任意一个类 (class文件),都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
python进阶学习四(面向对象)
一、正则表达式
定义:正则表达式是一个特殊的字符串序列,一个字符串是否与我们所设定的这样的字符序列,相匹配。
正则表达式的作用:它的作用:快速检查文本,实现一些替换文本的操作。比如:
- 1,检查一串数字是否是电话号码形式
- 2,检测一个字符串是否符合email的格式
- 3,把一个文本里指定的单词替换为另外一个单词
HashMap详解
一、HashMap
hashmap在元素size超过负载因子对应数的时候就会扩容,但是其实还有一种情况也会扩容,那就是链表上Node数量大于等于8且tab数组长度小于64的时候的时候。
HashMap的结构是哈希表,底层维护了一个Node数组(Jdk 8之后,之前是HashMap.Entry数组),它是集合框架里非常常用的集合类,和ArrayList一样,使用非常频繁,HashMap的初始容量是16,加载因子是0.75,当在一个位桶发生哈希冲突(也叫哈希碰撞)的时候,添加的元素会依次存放在该位置的最后一个元素后面(形成链表),链表数量大于8且HashMap元素大小小于64时,这条链表就会转成就会转成红黑树,注意一定两个条件都满足才会转成红黑树,不要忽略了64这个数,平时很多博客说链表大于8就转红黑树大概是因为在工程上链表大于8了基本上HashMap存储的元素大于64,否则说明这个HashMap的hash函数设计的不好,基本上算出来的值都是同一个,也就是说产生了哈希碰撞。而实际上HashMap的hash函数是已经高度优化了的,所以某条链表节点数大于8而总节点数小于64发生的概率极低,当然要知道这个逻辑。
python进阶学习二
一、pyhton项目组织架构—包和模块和类
python组织架构:包–>模块–>类。而类中有函数和变量。一个包可以包含很多模块,一个模块可以包括很多类。和java、c++不同,python中一个文件经常有多个类。java和c++中一般一个文件只有一个类,包可以理解就是一个文件夹(java中是jar包的概念)。