一、ArrayList
解决了数组的局限性,最常见的容器类,ArrayList容器的容量capacity会随着对象的增加,自动增长。不会出现数组边界的问题。
1 | package collection; |
二、ArrayList常用方法
首先创建一个重写了toString的Hero类
1 | package charactor; |
1、add增加
- 1、直接add对象 hero.add(new Hero(“demo”));
- 2、指定位置增加对象hero.add(3,”demo”)
1 | package collection; |
2、contains():判断是否存在
3、get():获取指定位置的对象
4、indexOf():获取对象所处的位置
5、remove():删除
6、set():替换
7、size():获取大小
8、toArray():转换为数组
三、ArrayList和List
ArrayList实现了接口List,常见的写法会把引用声明为接口List类型
1 | package collection; |
四、ArrayList遍历的方法
1、使用for循环,通过获取ArrayList的size()来一一遍历
1 | package collection; |
2、使用迭代器Iterator进行遍历,迭代器每次都是从一个空的位置开始,通过hasNext()来判断,当返回false时表示后面没有数据了结束遍历,获取通过next()方法获取。
1 | package collection; |
3、常用的for循环遍历.
不能进行ArrayList初始化,也不知道到底多少个元素在ArrayList,就是所有遍历出来
五、ArrayList和LinkedList的区别
ArrayList:顺序结构,插入,删除数据很慢(O(N)),查找快(O(1)),就类似于数组,跟链表的关系一样。
LinkedList:链表结构,插入,删除数据快(O(1)),查找慢(O(N))。
六、ArrayList和HashSet区别
最大区别在于:
1、是否有顺序:
ArrayList:有顺序
HashSet:无顺序(集合的无序性),它的具体顺序既不是按照hashcode的顺序,也不是按照插入顺序,根据在JVM的不用版本中,看到的顺序也是不同的,HashSet的顺序本身不稳定的。
2、是否重复
List中的数据可以重复
Set中的数据不能重复
重复判断的标准是:首先看hashcode是否相同,不同,则肯定是不同数据
如果相同,在比较equals,如果equals相同,则是相同数据,否则是不同数据。
七、HashSet,LinkedHashSet,TreeSet比较
HashSet:无顺序
LinkedHashSet:按照插入顺序
TreeSet:从小到大顺序
1 | package collection; |