您的位置:首页 > 编程语言 > Java开发

java笔记 集合总结

2013-04-13 17:38 239 查看
----------- 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() 返回此列表的最后一个元素。

会引发异常NoSuchElementException

E removeFirst() 移除并返回此列表的第一个元素。

会引发异常NoSuchElementException

E removeLast() 移除并返回此列表的最后一个元素。

会引发异常NoSuchElementException

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集合时使用此构造器即可让集合具有可比性

两种方式都存在时以比较器为主
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: