目录java
能不能有一种数组能够在删除掉某些元素自动缩小就行了。但是话说哪里学的Java?数组能删除元素吗?今天讲一下一个特殊对象——ArrayList,它的出现与存在和数组有着几分相似。下面按照它是什么-有什么用-怎么用来说?再讲讲与数组的区别?算法
源码搞上!!!很明显它是一个类,继承(extends)了AbstractList,实现(implements)了List、RandomAcess等。(extends能够理解为全盘继承了父类的功能。implements能够理解为为这个类附加一些额外的功能)。它是一个容量能够自动增加的动态数组(并不是数组),能够支持删除操做。数组
它的初始容量为10。下面的构造方法第一个就是构造容量为10的。要想改变这个容量,就像第二个的构造方法那样就能够了。第三个是构造一个包含指定集合的元素的列表,按照他们由集合的迭代器返回的顺序。安全
值得一提的是,Java集合框架中定义了List接口,并且只有两个实现,除了这个ArrayList还有LinkedList。在数据结构与算法分析书上有着这么两句结论,具体获得是在书中经过了算法得来的。LinkedList在Java和C#中其实是在使用双链表。数据结构
数组表(ArrayList)和数组很类似在于,读取的时候为O(1),在插入时候就变为O(n)了,不一样在于这个数组表能够增长长度,在添加时候,只需表尾编号加一即可以肯定新元素了。多线程
ArrayList不是线程安全的。线程安全是说一个对象能够彻底被多个线程同时使用,不出问题。这个在后面的深刻学习虚拟机会常常遇到——使用多线程之间同步synchronized或使用锁(lock)能够解决。框架
动态的增长和减小元素,实现了ICollection和list接口。固然还能够灵活得选择数组的大小。dom
3.经常使用方法
学习
想要存储数字,也就是基本数据类型,就可使用包装类(位于java.lang下)。线程
基本类型 | 包装类 |
---|---|
int | Integer |
byte | Byte |
short | Short |
long | Long |
float | Float |
doublr | Double |
char | Character |
boolean | Boolean |
ArrayList<Integer> list = new ArrayList<>;//这样建立不会报错了
实例:生成1-30之间的随机数,添加到集合里,存储5个
//主代码 ArrayList<Integer> list2= new ArrayList(); Random r = new Random(); for(int i = 0; i < 5; i++){ int num = r.nextInt(30) + 1; list.add(num); }