java
夼神
这个作者很懒,什么都没留下…
展开
-
LinkedList
前提先有节点、头结点和尾节点的概念插入头结点如果之前头结点是空的,那么该链表是空的 头结点和尾节点都会是他, 如果之前有头节点,那么新插入节点的下一个指向他插入尾节点如果之前尾结点是空的,那么该链表是空的 头结点和尾节点都会是他, 如果之前有尾节点,那么他的尾节点指向新插入节点add方法默认使用的插入尾节点IndexOutOfBoundsException异常不管是get/set/add这些方法都会使用checkElementIndex这个方法,他会去验证下标有没有超出原创 2021-10-31 22:50:30 · 168 阅读 · 1 评论 -
特殊字符过滤
手机端常常会遇到用户输入框,输入emoji,如果是数据库是UTF8,会遇到报错:SQLException: Incorrect string value: ‘\xF0\x9F\x98\x84’ for column ‘review’ at row 1原因是:UTF-8编码有可能是两个、三个、四个字节。Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。本次遇到emoji表情和一个特殊字符 ????,前后端都会进行过滤!js过滤 最好是写成共通调用function em原创 2021-10-09 15:31:21 · 1743 阅读 · 0 评论 -
Arrays.asList()
为什么Arrays.asList()得到的list不能增删操作?看了上面的图片,增加和删除都会抛异常UnsupportedOperationException,不支持这个功能!这是为什么呢?带着这个疑问继续看下去接口表示返回的是列表视图,只能支持查看方面的,这个也能说的过去,那他怎么实现的呢?还有一个重点就是new ArrayList<>(a);你以为他是用的ArrayList吗?使用的自己的静态内部类!这里我也把ArrayList也展示出来,注意看下区别没错,他们都是继承了A原创 2021-09-27 16:49:21 · 92 阅读 · 0 评论 -
HashMap
HashMap1.默认初始长度是162.默认最大值是1>>303.扩展因子为0.754.长度超过8会转化成红黑树5.长度低于6转回链表初始初始化是会调用tableSizeFor,对传入的整数进行位移运算,经过该方法以后返回的结果都会是2的次幂这也是为什么容量会是2的次幂扩容阈值(threshold) = 负载因子(loadFactor) x 容量(capacity)当HashMap中table数组(也称为桶)长度 >= 阈值(threshold) 就会自动进行扩原创 2021-04-15 18:24:00 · 96 阅读 · 0 评论 -
ArrayList
创建时没有指定大小,默认是10,如果是0则会创建空数组,最大长度是integer最大值-8。扩展因子是1,扩展大小是原来大小加上原来大小左移一位ArrayList底层是数组,所以每次添加都会判断大小是否足够,不够时会扩容,新的大小等于原来大小加上原来大小左移一位,通常说的是1.5倍是存在问题扩容的时候,会以新的容量建一个原数组的拷贝,修改原数组,指向这个新数组,原数组被抛弃,会被GC回收。System.arraycopy方法System中提供了一个native静态方法arraycopy(...原创 2021-04-15 19:01:54 · 138 阅读 · 0 评论 -
HashSet
,HashSet底层是Hashmap,加载因子和hashmap一样是0.75,创建时指定大小小于16的四分之三,那么使用hashmap最小的容量16,hashSet使用hashmap的key部分,add方法时value始终都是同一个,如果key值一样,那么他就会替换,不会出现重复的key,也实现了hashSet的不重复的。...原创 2021-04-15 19:25:48 · 63 阅读 · 0 评论