1. 增:add(Object obj); 2. 删:(List中的)remove(int index) / (Connection中的)remove(Object obj); 3. 改:set(int index, Object obj); 4. 查:get(int index); 5. 插:add(int index, Object obj); 6. 长度:size(); 7. 遍历:Iterator迭代器 /增强for循环(模板举例为for(Person person:persons));
1. int indexOf(Object obj):返回obj在集合中首次出现的位置,如果不存在,返回-1; 2. int lastIndexOf(Object obj):返回obj在集合中最后出现的位置,如果不存在,返回-1; 3. List subList(int fromIndex, int toIndex):返回子集合,包括fromIndex,不包括toIndex; 4.
1. ArrayList插入、删除操作效率差,因为底层是用Object[]数组存储的。例如在长度10000的数组中插入一个元素,则由于数组的特性,在该插入点之后的元素一直到10000处的元素都要后退一位才行,所以效率差。但却适合随机访问元素;
2. LinkedList随机访问其中的元素效率差,因为其底层用双向链表存储,链表不具备数组的索引直接访问特点,需要遍历到访问处,所以效率差。但却适合插入和删除操作;
错误方式一(举例):
Collection coll = new ArrayList(); coll.add(12); coll.add(22); coll.add(32); coll.add(42); Iterator iterator = coll.iterator(); while((iterator.next())!=null) { System.out.println(iterator.next()); }以上结果为22,42,说明:next()方法在一次循环中用了两次,会导致结果间隔输出;
错误方式二(举例):
Collection coll = new ArrayList(); coll.add(12); coll.add(22); coll.add(32); coll.add(42); while(coll.iterator().hasNext()) { System.out.println(coll.iterator().next()); }以上结果无限重复输出第一个元素,说明:集合对象每次调用iterator()方法都得到一个全新的迭代器对象,并且默认游标指在集合的第一个元素之前;
正确方式:
Collection coll = new ArrayList(); coll.add(12); coll.add(22); coll.add(32); coll.add(42); Iterator iterator = coll.iterator(); while(iterator.hasNext()) { System.out.println(iterator.next()); }注意小点: 1.Iterator可以删除集合的元素,但是是遍历过程中通过迭代器对象的remove(),而不是集合对象的remove(); 2.如果还未调用next()或在上一次调用next()之后已经调用了remove(),此时连续再调用remove()会报错; 3.数组转换为集合:
List list = Arrays.asList(//数组);错误方式(举例):
List list = Arrays.asList(new int[] {11,22});以上输出结果为[[I@15db9742],说明:输出时是将list看作一个整体,所以结果不是11,22;
正确方法: 1.将其上的int改为integer; 2.直接在括号内填数据,如
List list = Arrays.asList(11,22);