List集合特有方法 特有方法。凡是可以操作角标的方法都是该体系特有的方法。 增 add(index,element);在指定位置添加元素 addAll(index,Collection); 删 remove(index); 删除指定位置的元素 改 set(index,element); 修改元素 查 get(index): 通过角标获取元素 subList(from,to); listIterator(); 特有迭代器,可对集合进行操作 intindexOf(obj): 获取指定元素的位置。 ListIteratorlistIterator(); List集合特有的迭代器。ListIterator是Iterator的子接口。 在迭代时,不可以通过集合对象的方法操作集合中的元素。 因为会发生ConcurrentModificationException异常。 所以,在迭代器时,只能用迭代器的方法操作元素,可是Iterator方法是有限的, 只能对元素进行判断,取出,删除的操作, 如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator。 该接口只能通过List集合的listIterator方法获取。 Vector 特有的取出方式:枚举(io中有用到)与迭代器一样。 Enumeration<E> elements() 返回此向量的组件的枚举。 Enumeration en = v.elements(); while(en.hasMoreElements()) { System.out.println(en.nextElement()); } LinkedList:特有方法: void addFirst(); addLast(); 添加元素 getFirst(); getLast(); 获取元素,但不删除元素。如果集合中没有元素,会出现NoSuchElementException removeFirst(); removeLast(); 获取元素,但是元素被删除。如果集合中没有元素,会出现NoSuchElementException 在JDK1.6出现了替代方法。 boolean offerFirst(); offerLast(); 添加元素 peekFirst(); peekLast(); 获取元素,但不删除元素。如果集合中没有元素,会返回null。 pollFirst(); pollLast(); 获取元素,但是元素被删除。如果集合中没有元素,会返回null。 堆栈数据结构 :先进后出,FirstIn Last Out -- FILO如同杯子。 队列数据结构 :先进先出,FirstIn First Out -- FIFO如同水管。 List集合 判断元素是否相同,依据是元素的equals方法。 contains()与remove()方法底层调用的是equals。 Set集合 Set集合的功能与Collection是一致的。 HashSet集合 如何保证元素唯一性的呢? 是通过元素的两个方法,hashCode和equals来完成。如果元素的HashCode值相同,才会判断equals是否为true;如果元素的hashcode值不同,不会调用equals。 注意,对于HashSet集合判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法。 TreeSet集合 保证元素唯一性的依据:compareTo方法return 0. compareTo方法return 正数,元素向后放;compareTo方法return 负数,元素向前放。 用该方法直接return正数或负数,来完成集合元素的正序或逆序。 TreeSet排序的第一种方式: 让元素自身具备比较性。元素需要实现Comparable接口,覆盖compareTo方法。也种方式也成为元素的自然顺序,或者叫做默认顺序。 TreeSet排序的第二种方式:。 当元素自身不具备比较性时,或者具备的比较性不是所需要的。这时就需要让集合自身具备比较性。在集合初始化时,就有了比较方式(传入比较器)。 当两种方式都存在时,以比较器为主。 如何定义比较器? 定义一个类,实现Comparator接口,覆盖compare方法