ArrayList源码分析:jdk7情况下 * ArrayList list=new ArrayList();//创建了长度是10的Object[]数组elementData * list.add(123);//elementData[0]=new Integer(123); * ... * list.add(123);//如果此次的添加导致底层elementData数组容量不够,则扩容 * 默认情况下,扩容为原来的1.5倍,同时需要将原有数组中的数据复制到新的数组中。 * * 结论:建议开发中使用带参的构造器:ArrayList list=new ArrayList(int capacity) * jdk8中 ArrayList的变化: * ArrayList list=new ArrayList();//底层Object[] elementData初始化为{}.并没有创建长度为10的数组 * * list.add(123);//第一次调用add()时,底层才创建了长度为10的数组,并将数组添加到elementData[0] * ... * 后续的添加和扩容 *** 作与jdk 7无异 * * linkedList的源码分析: * linkedList list=new linkedList(); 内部声明了Node类型的first和list属性,默认值为null * list.add(123);//将123封装到Node中,创建了Node对象 * * Vector的源码分析:jdk7和jdk8中通过Vector()构造器创建对象时,底层都创建了长度为10的数组 * 再扩容方面,默认扩容为原来数组长度的2倍
/-----Collection接口:单列集合、用来存储一个一个对象 * /-----list接口:储存有序的、可重复的数据 * /-----ArrayList、linkedList、Vector * /-----set接口:储存无序的,不可重复的数据 * /-----HashSet、linkedHashSet、TreeSet * /-----Map接口:双列集合,用来储存(key-value)一对一对的数据 * /-----HashMap、linkedHashMap、TreeMap、Hashtable ———————————————— 版权声明:本文为CSDN博主「阿文】」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_56760130/article/details/122607960 * List接口常用 方法 * void add(int index,Object ele):在index位置插入ele元素 * boolean addAll(int index,Collection eles):从index位置开始将eles中的所有元素都添加进来 * Object get(int index):获取指定index位置上的元素 * int indexOf(Object obj):获取在当前集合中首次出现的位置 * int lastIndexOf(Object obj):返回在当前集合中末次出现的位置 * object remove(int index):移除指定index位置的元素,并返回此元素 * Object set(int index,Object ele):设置指定index位置的元素为ele * List subList(int fromIndex,int toIndex):返回从fromIndex到toIndex位置的自子集合(左闭右开) * * 总结:常用方法 * 增:add(Object obj) * 删:remove(int index)/remove(Object obj) * 改:set(int index,Object ele) * 查:get(int index) * 插:add(int index,Object ele) * 长度:size() * 遍历:① Iterator迭代器方式 * ② 增强for循环 * ③ 普通的循环
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)