目录
概述
数组必须指定数组的长度
集合不需要指定长度,会根据需求扩展,存储容量可以发生改变
但ArrayList底层数据结构仍为数组,当原数组装不下时,会自动创建一个长度为原数组1.5倍的新数组,并将原数组的数据拷贝至新数组,再添加新元素,因为扩容为1.5倍,因此可能会造成内存的浪费,所以在元素长度不变时使用数组
ArrayList
ArrayList类可以创建集合,其中可以添加任意数据类型的数据,想要限制集合容器中存储的数据类型,需要在创建对象时加入(传入什么参数E就表示什么类型)(如:ArrayList list=new ArrayList<>()),且<>内只能加入引用数据类型,如果要存基本类型要用其对应的包装类型(int为Interager,char为Character,其他为首字母大写),这个<>称为泛型,在作为形参时也要添加
前后泛型需要数据类型一致,jdk7及之后后面的<>中可以不写
打印ArrayList创建的对象名,不会打印地址,而是集合中的内容,因为重写了Object的ToString方法,如果数组没装满,没装的位置不会显示
空参构造:初始化长度为10 ,带参可以指定集合的长度
加入元素用方法add(),参数为指定元素,和插入的索引位置(可以省略,省略为末尾添加,不能写入不存在的索引位置,索引最多可以写到原集合最大索引+1,这个参数在指定的元素之前),无返回类型,添加的数据,若省略添加位置,则返回boolen类型,只会renturn true。
删除元素用方法remove(),参数为删除的元素(返回删除是否成功)或者删除的索引(返回被删除的元素),只能删除一个,删除之后索引重置,因此需要在remove()之后索引减一
修改元素用方法set(),参数为修改的索引位置和想要修改后的内容,返回被修改的数据
想查询元素用方法get(),参数为索引位置,返回索引位置的数据
想查询集合中的元素个数用size(),无参数,返回元素个数
集合中删除重复元素时,正序删除注意需要i--,倒序删除不需要,因为删除第一个元素之后,集合会默认将后面的元素前移一位,正序删除需要考虑到重复的元素连续的情况,而倒序删除不需要考虑,具体参考day13-ArrayListTest5
常量和变量都能调用方法是用常量调用,避免造成空指针异常(null指针调用方法会造成空指针异常),如“test”.equals(s)而不是s.equals(”test“)