----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
Collection集合类中的方法(集合中的方法适用于其所有子类)
集合中储存的是对象的内存地址值
boolean add(E e) 往集合中添加一个元素(可选操作)。
boolean addAll(Collection<? extends E> c) 将指定 collection 中的所有元素都添加到此 collection 中(可选操作)。
void clear() 清空集合中的元素(可选操作)。
boolean contains(Object o) 如果此 collection 包含指定的元素,则返回 true。
boolean containsAll(Collection<?> c) 如果此 collection 包含指定 collection 中的所有元素,则返回 true。
boolean equals(Object o) 比较此 collection 与指定对象是否相等。
int hashCode() 返回此 collection 的哈希码值。
boolean isEmpty() 如果此 collection 不包含元素,则返回 true。
Iterator<E> iterator() 返回在此 collection 的元素上进行迭代的迭代器。
boolean remove(Object o) 从此 collection 中移除指定元素的单个实例,如果存在的话(可选操作)。
boolean removeAll(Collection<?> c) 移除此 collection 中那些也包含在指定 collection 中的所有元素(可选操作)。
boolean retainAll(Collection<?> c) 仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)并保存到调用此方法的集合中区。
int size() 返回此 collection 中的元素个数。
Object[] toArray() 返回包含此 collection 中所有元素的数组。
toArray(T[] a) 返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。
List集合 其中的对象的存放特点是有序、可重复的。因为该集合体系有索引。
常用特性(相对于Collection来说)方法:
可以对角标进行操作的方法,其角标从0开始
void add(int index, E element) 将指定的元素插入此列表中的指定位置。
boolean addAll(int index, Collection<? extends E> c) 从指定的位置开始,将指定 collection 中的所有元素插入到此列表中。
E remove(int index) 移除此列表中指定位置上的元素。
E set(int index, E element) 用指定的元素替代此列表中指定位置上的元素。
E get(int index) 返回此列表中指定位置上的元素。
int indexOf(Object o) 返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回 -1。
ListIterator<E> listIterator() 返回此列表元素的列表迭代器(按适当顺序)。
void add(E e) 将指定的元素插入列表(可选操作)。
boolean hasPrevious() 如果以逆向遍历列表,列表迭代器有多个元素,则返回 true。
int nextIndex() 返回对 next 的后续调用所返回元素的索引。
E evious() 返回列表中的前一个元素。
inpreviousIndex() 返回对 previous 的后续调用所返回元素的索引。
voiset(E e) 用指定元素替换 next 或 previous 返回的最后一个元素(可选操作)。
List<E> subList(int fromIndex, int toIndex) 返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图。
和String类中的sub方法一样取数据的时候含头不含尾
ArrayList集合:底层结构是数组接口,查询(同时可以修改)速度快,但是线程不同步。若数据个数大于默认构造的ArrayList的个数,会以50%默认大小递增
LinkedList集合:底层是链表结构,每个数据记录前一个数据的信息和自身的信息,增加和删除速度快
void addFirst(E e) 将指定元素插入此列表的开头。
void addLast(E e) 将指定元素添加到此列表的结尾。
E getFirst() 返回此列表的第一个元素。
会引发异常NoSuchElementException
E getLast() 返回此列表的最后一个元素。
E removeFirst() 移除并返回此列表的第一个元素。
E removeLast() 移除并返回此列表的最后一个元素。
jdk1.6后可用下列方法代替
E peekFirst() 获取但不移除此列表的第一个元素;如果此列表为空,则返回 null。
E peekLast() 获取但不移除此列表的最后一个元素;如果此列表为空,则返回 null。
E pollFirst() 获取并移除此列表的第一个元素;如果此列表为空,则返回 null。
E pollLast() 获取并移除此列表的最后一个元素;如果此列表为空,则返回 null。
boolean offerFirst(E e) 在此列表的开头插入指定的元素。
boolean offerLast(E e) 在此列表末尾插入指定的元素
Vector集合:底层结构是数组接口,但是线程同步,相对于ArrayList来所效率低,且若数据个数大于默认构造的ArrayList的个数,会以100%默认大小递增,浪费内存空间
set集合:元素是无序不可以重复的,底层是Map
功能和Collection相同
HashSet:底层数据结构是哈希表,非线程同步
保证元素唯一性:通过元素的两个方法,hashCode和equals来完成的。
如果元素的HashCode相同才会去用equals判断是否为true,如果weitrue,则在当前地址下再储存一个新元素
如果元素的hashCode不同就直接储存而不再进行判断了
删除和判断元素时会先判断hash值再用equals方法判断内容值
TreeSet:可以对Set集合中的元素进行排序(ASCII码从小到大的方式排序),排序过程中按照排序规则相同的元素不会再存入集合
底层数据结构:二叉树
故所有放进TreeSet中的元素必须具备可比性,
第一种:自定义数据应实现Comparable接口,并重写compareTo()方法,通过此方法自定义我们自定义的数据的比较方式若想要怎么存进去
就怎么取出来可让compareTo中只返回正数即可(这样都往右下方存放),反向取的话返回-1即可,若只返回0则只能才存进一个元素
第二种:当元素自身不具备比较性或者具备的比较性不是所需要的,这时就可以让集合自身具备可比性。
创建类实现Compartor比较器即可,重写compare(Object obj1,Object obj2)方法,在构造Treeset集合时使用此构造器即可让集合具有可比性
两种方式都存在时以比较器为主