您的位置:首页 > 产品设计 > UI/UE

java.容器类(list,queue,map,set)

2014-12-10 16:15 441 查看

Collection

public interface Collection<E> extendsIterable<E>

Set,Queue和List 都继承了Collection。Map没有。

Collection接口的方法:

boolean add(Object o) :向集合中加入一个对象的引用

void clear() :删除集合中所有的对象,即不再持有这些对象的引用

boolean isEmpty() :判断集合是否为空

boolean contains(Object o): 判断集合中是否持有特定对象的引用

Iterartor iterator() : 返回一个Iterator对象,可以用来遍历集合中的元素

boolean remove(Object o) :从集合中删除一个对象的引用

int size() :返回集合中元素的数目

Object[] toArray() :返回一个数组,该数组中包括集合中的所有元素

boolean java.util.Collection.addAll(Collection<? extends E> c)

求this与c的并集,然后保存在this对象中。若求交集过程中this对象的集合数据有变化,返回true。
boolean java.util.Collection.retainAll(Collection<?> c)

求this与c的交集,然后保存在this对象中。若求交集过程中this对象的集合数据有变化,返回true。
boolean java.util.Collection.removeAll(Collection<?> c)

求this与c的差集,this-c,然后保存在this对象中。若求交集过程中this对象的集合数据有变化,返回true。

Collection的toString()方法生成可读性很好的字符串,[e1,e2,...,en]

List

public interface List<E> extends
Collection<E>

实现类:

ArrayList : 变长数组。相邻元素内存地址也相邻,可以对元素进行随机的访问,插入与删除元素的速度慢。

LinkedList: 链表数组。插入和删除速度快,访问速度慢。

常用方法:

<T> T[] java.util.List.toArray(T[] a)

这个方法很变态。List本身就是一个泛型接口,好好的<E>不用,非得转换成函数中的泛型T。此函数的行为依赖于实现类,以ArrayList为例,a长度与内部实现是相关的,见图1.



图1 ArrayList.toArray()函数实现
Object[] java.util.List.toArray()

返回的是Object。

E java.util.List.set(int index, E element)

将第i个元素替换成新元素。

void java.util.List.add(int index, E element)

将元素插入到第i个位置上。

int java.util.List.indexOf(Object o)

返回元素o第一次出现的位置。若没有,返回-1。

List<E> java.util.List.subList(int fromIndex, int toIndex)

返回子列表。

Queue

public interface Queue<E> extends
Collection<E> {}

boolean java.util.Queue.add(E e)

在队列尾部添加指定元素。

E java.util.Queue.element()

返回队列头部的元素,但并不从队列中删除该元素,当队列为空时此方法会抛出异常。

E java.util.Queue.remove()

返回队列头部的元素,并从队列中删除该元素,当队列为空时此方法会抛出异常。

实现类:
LinkedList。

双端队列:public interface Deque<E> extends Queue<E>{} 详见:/article/2604992.html

优先队列:public class PriorityQueue<E> extends AbstractQueue<E> 详见:/article/2604991.html

Set

public interface Set<E> extends
Collection<E>{}

Set是最简单的一种集合。没有重复元素。只能通过iterator访问元素。

实现类:

HashSet : 为快速查找设计的Set。存入HashSet的对象必须定义hashCode()。

TreeSet : 保存自然次序的Set,底层为树结构。使用它可以从Set中提取有序的序列。

LinkedHashSet : 具有HashSet的查询速度,存入LinkedHashSet的对象必须定义hashCode()。内部使用链表维护元素的插入次序。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。

set详细内容移步:
http://write.blog.csdn.net/postedit/41659509

Map

public interface Map<K,V>

存放多组键值对。

V java.util.Map.put(K key, V value)

添加指定的键值对。若K 已存在,新的value会覆盖旧的。

V java.util.Map.get(Object key)

通过Key获得Value。若key不存在返回null。

Set<K> java.util.Map.keySet()

返回键的集合。

Collection<V> java.util.Map.values()

返回值的集合。

boolean java.util.Map.containsKey(Object key)

略。

boolean java.util.Map.containsValue(Object value)

略。

void java.util.Map.clear()

略。

boolean java.util.Map.remove(Object key, Object value)

删除已有的键值对。

toString()生成的结果 {a=1,b=2,...,z=26}

实现类

java.util.TreeMap

红黑树实现。需要实现Comparable接口。

java.util.HashMap

基于哈希表实现。使用HashMap,需要同时重写hashCode()和equals()方法。

一般地,HashMap查找速度快,TreeMap可以按照元素间从小到大的顺序遍历。

Abstract

public abstract class AbstractList<E> extends AbstractCollection <E> implements List<E>

public abstract class AbstractQueue<E> extends AbstractCollection <E> implements Queue<E> {}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: