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> extendsCollection<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> extendsCollection<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> extendsCollection<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> {}
相关文章推荐
- Java -- 容器使用 Set, List, Map, Queue, Collections
- Java 深入学习(1) —— 容器类(集合类)Set、List、Queue、Map 之间的区别
- Java中的容器类(List,Set,Map,Queue)
- Java -- 容器使用 Set, List, Map, Queue, Collections
- Java中容器[Collection(List,Set,Queue),Map],迭代器(Iterator)和比较器(Comparator)及列表排序
- JAVA的容器---List Map Set
- JAVA的容器-List,Map,Set
- JAVA的容器---List Map Set
- JAVA,List,Map,Set,容器
- [摘]JAVA的容器---List Map Set
- Java数组与容器类分析资料--数组、List和Set、Map-asp.net关注
- JAVA的容器---List Map Set
- JAVA的容器---List Map Set
- JAVA的容器---List,Map,Set
- JAVA的容器---List,Map,Set
- Java数组与容器类分析资料–数组、List和Set、Map等
- JAVA的容器---List,Map,Set
- JAVA,List,Map,Set,容器
- java中三种容器接口List .Set .Map 及其java容器总结
- JAVA的容器---List,Map,Set