removeAll会直接调用此方法,传入list和false,因中间的逻辑都不会走(如果由retainAll方法调用,则会走这些逻辑判断),所以只需要看finaly中的最后一个if条件,w=0,通过循环将数组中的值全部变为null,同时将数组的长度也设置为0   clear方法如下,故并没有区别,只有modCount的次数会不一样,clear的modCount次数会+1,而removeAll的modCount的次数会加list.size…
在分析源码ArrayList.remove()时,偶然发现了一个疑惑的点,就是:源码也是将最后一个对象的引用指向null(源码:elementData[--size] = null; // clear to let GC do its work),而使用 list.set(最大下标,null)同样也是将对象的引用指向null,为什么输出的结果为:remove()方法 对应位置的值会被“删除”,set()方法 下标位置的值依然被保留.输出.这是为什么呢? 首先我们先看一下remove()方法的源码…
Go语言中的有缓冲channel和无缓冲channel区别 结论 ch1:=make(chan int)// 无缓冲 ch2:=make(chan int,1)// 有缓冲 无缓冲: 当向ch1中存值后需要其他协程取值,否则一直阻塞 有缓冲: 不会阻塞,因为缓冲大小是1,只有当放第二个值的时候,第一个还没被人拿走,才会阻塞. 测试程序 测试1,声明无缓冲channel func Test_1(t *testing.T) { // 无缓冲 ch := make(chan int) // fatal…
row_number的用途非常广泛,排序最好用它,它会为查询出来的每一行记录生成一个序号,依次排序且不会重复,注意使用row_number函数时必须要用over子句选择对某一列进行排序才能生成序号. rank函数用于返回结果集的分区内每行的排名,行的排名是相关行之前的排名数加一.简单来说rank函数就是对查询出来的记录进行排名,与row_number函数不同的是,rank函数考虑到了over子句中排序字段值相同的情况,如果使用rank函数来生成序号,over子句中排序字段值相同的序号是一样的,后…
PS: handler的目的是在组件进程中开辟一个线程作为消息的poller,收到消息后可以更新Activity中的控件(特殊的view) 任务.进程和线程     关于Android中的组件和应用,之前涉及,大都是静态的概念.而当一个应用运行起来,就难免会需要关心进程.线程这样的概念.在Android中,组件的动态运行,有一个最与众不同的概念,就是Task,翻译成任务,应该还是比较顺理成章的. Task的介入,最主要的作用,是将组件之间的连接,从进程概念的细节中剥离出来,可以以一种不同模型的东…
java面试要点---ArrayList list = new ArrayList(); 在这个泛型为Integer的ArrayList中存放一个String类型的对象. ArrayList list = new ArrayList(); 在这个泛型为Integer的ArrayList中存放一个String类型的对象. 1.刚刚看到的时候,也是很纳闷后来仔细看了下,java的反射机制;2.这个可以通过java的反射机制来实现;3.下面是一个例子: package com.credream.ref…
C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; 是正确的,int i=null; 编译器就会报错.为了使值类型也可为空,就可以使用可空类型,即用可空类型修饰符"?"来表示,表现形式为"T?"例如:int? 表示可空的整形,DateTime? 表示可为空的时间.T? 其实是System.Nullable(泛型结构)的…
导读:在机房重构的时候,为了降低耦合,不能返回DataTable型数据,而需要转换为泛型集合.我一直使用的就是IList,那天师傅过来帮我挑错,问我:你为什么一直写IList呢,不应该是List吗?好吧,然后,我才突然发现,我一直都写错了.不过,我真的错了吗?那么,它们之间又是什么关系呢? 一.基础概念 1,集合(ArrayList) 是Array的复杂版本,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处. 2,List 有序的 colle…
1. ArrayList ArrayList 是一个数组队列,相当于动态数组.与Java中的数组相比,它的容量能动态增长.它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口.默认容量是10(从源码中可以看出每次容量扩大为原来的1.5倍,int newCapacity = oldCapacity + (oldCapacity >> 1);).ArrayList中的操作不是线程安全的!所以,建议在单…
package test; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.LinkedList; import java.util.List; public class TestList { static final int size = 1000000; public static void main(String[] args) { L…