AJPFX总结Collection集合(下)

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 方法

猜你喜欢

转载自www.cnblogs.com/AJPFX/p/10887718.html