1. 数组和集合的区别
- 数组声明了容纳元素的类型,而集合不声明
- 数组声明之后,长度不可改变,而集合可以根据需求动态改变长度
- 数组是线性排列的,执行效率优于集合
2. 集合相关知识
2.1 集合体系中的三个主要接口:List、Set、Map;List和set实现了collection接口;
2.2 Set:不允许重复元素,HashSet和TreeSet是两个主要实现类,Set的取值只能通过游标
2.3 List:允许元素重复,ArrayList、LinkedList和Vector是其三个主要实现类;ArrayList是线程不安全的,Vector是线程安全(效率相对较低)的,这两个的底层都是由数组实现的;LinkedList是线程安全的,底层是由链表实现的。
数组和链表的优缺点:数组查询、修改快,插入和删除较难(要移动数据);链表插入删除容易,查询、修改慢(要移动指针)。
2.4 Map是键值对集合,key值唯一不重复,value值可以,HashMap、TreeMap、HashTable是三个主要实现类;HashTable是线程安全的,效率低,不能存null值,HashMap是线程不安全的,可以存null值
ArrayList list=new ArrayList(); 这种是默认创建大小为10的数组,每次扩容大小为1.5倍
ArrayList list=new ArrayList(20); 这种是指定数组大小的创建,创建时直接分配其大小,没有扩充。
所以,扩充为0次
ArrayList初始化的默认长度?ArrayList的长度是固定的吗?其实现的原理是什么?
如果直接打印al.size()当然是0,size()方法,因为10指的是“逻辑”长度。 所谓“逻辑”长度,是指内存已存在的“实际元素的长度” 而“空元素不被计算“;即:当你利用add()方法,向ArrayList内添加一个“元素”时, 逻辑长度就增加1位。 而剩下的9个空元素不被计算。
ArrayList<String> al = new ArrayList<String>();
版权声明:欢迎转载, 转载请保留原文链接。https://mp.csdn.net/postedit/79399936