5、java的ArrayList和范型
java里面有个神奇的类,叫Collection,这货是个接口,它的下面有Set,List, Map接口,即集合、数组、映射,这俩接口下面就有implements这些接口的各种类比如HashSet,LinkedList,Vector,ArrayList,HashMap吧啦吧啦。
关于ArrayList的用法比较灵活,因为是个写好的类,所以能想到增删改查加减什么的基本都有实现,可以现用现查,有时间可以看看源码实现。这里主要有两个概念,范型和线程安全。
线程安全因为代码里没用到所以先不着重讲,提一下,比方说我有一个ArrayList a= {1,2,3},我同时开了三个并发的线程,每个线程让每个值加一for(int i=0;i<3;i++){a[i]++;},我期望的目标当然是a = {4,5,6},但很可能我两个线程同时读了a[0]=1,同时a[0]++并写入,最终a[0]=3。
线程安全就是当一个线程操作一个内存中的变量的时候会把它锁上,别的线程无法操作,这样就不会发生冲突。嗯,ArrayList不安全。
范型是C++里就有的一套概念,就是<>里面的东西可以是任何类型,术语“参数化类型”,这个在类或者方法定义的时候就写好。
比如class A<T>{ public T bianliang;public add(T canshu);}
这样T就是一个类型变量,可以在实例化类的时候灵活指定