Java常见容器与迭代器

来源:互联网 发布:个人数据融合算法 编辑:程序博客网 时间:2024/06/02 19:29

java常见容器

java中的容器只有四种:Map,List,Set,Queue
其中List,Set,Queue实现了Collection接口。
Collection保存单一元素,Map保存关联键值对。

Collection主要方法

返回值 方法 作用 boolean add(E e) 确保此 collection 包含指定的元素(可选操作)。 boolean addAll(Collection c) 将指定 collection 中的所有元素都添加到此 collection 中(可选操作)。 void clear() 移除此 collection 中的所有元素(可选操作)。 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 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 中所有元素的数组。 T[] toArray(T[] a) 返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。

Map的主要方法

返回值 方法 作用 void clear() 从此映射中移除所有映射关系(可选操作)。 boolean containsKey(Object key) 如果此映射包含指定键的映射关系,则返回 true。 boolean containsValue(Object value) 如果此映射将一个或多个键映射到指定值,则返回 true。 Set< Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的 Set 视图。 boolean equals(Object o) 比较指定的对象与此映射是否相等。 V get(Object key) 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。 int hashCode() 返回此映射的哈希码值。 boolean isEmpty() 如果此映射未包含键-值映射关系,则返回 true。 Set<K> keySet() 返回此映射中包含的键的 Set 视图。 V put(K key, V value) 将指定的值与此映射中的指定键关联(可选操作)。 void putAll(Map<? extends K,? extends V> m) 从指定映射中将所有映射关系复制到此映射中(可选操作)。 V remove(Object key) 如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。 int size() 返回此映射中的键-值映射关系数。 Collection<V> values() 返回此映射中包含的值的 Collection 视图。

具体容器:

Map

Map是一种将对象与对象相关联的设计。

类型 特点 HashMap 被设计用来快速访问 TreeMap 保持键的排序状态,没有HashMap快 LinkedHashMap 保持元素插入的顺序,但是也通过散列提供了快速访问能力

List

List通过数字索引与对象关联,List可以自动扩充容量。

类型 特点 ArrayList 适合大量随机访问,不适合大量插入删除操作 LinkedList 同时实现了List和Queue接口具有Queue和栈的行为,插入删除速度较快

Set

Set不接受重复的元素

类型 特点 HashSet 提供快速查询 TreeSet 保存元素始终在排序状态 LinkedListHashMap 保持元素的插入顺序

Queue

先入先出

类型 特点 PriorityQueue 优先队列,声明下一个弹出元素是最需要的元素 LinkedList 同时实现了List和Queue接口具有Queue和栈的行为

迭代器

Interator

Collcetion都可以产生Interator
Iterator只能单向移动,

返回值 方法 作用 boolean hasNext() 如果仍有元素可以迭代,则返回 true。 E next() 返回迭代的下一个元素。 void remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。

ListInterator

List(包括ArrayList和LinkedList)都可以产生ListInterator,也可以产生Interator
ListInterator可以双向移动
可以通过listInterator(n)方法来创建一个一开始就执行列表索引n处的ListInterator。

返回值 方法 作用 void add(E e) 将指定的元素插入列表(可选操作)。 boolean hasNext() 以正向遍历列表时,如果列表迭代器有多个元素,则返回 true(换句话说,如果 next 返回一个元素而不是抛出异常,则返回 true)。 boolean hasPrevious() 如果以逆向遍历列表,列表迭代器有多个元素,则返回 true。 E next() 返回列表中的下一个元素。 int nextIndex() 返回对 next 的后续调用所返回元素的索引。 E previous() 返回列表中的前一个元素。 int previousIndex() 返回对 previous 的后续调用所返回元素的索引。 void remove() 从列表中移除由 next 或 previous 返回的最后一个元素(可选操作)。 void set(E e) 用指定元素替换 next 或 previous 返回的最后一个元素(可选操作)。

Foreach和迭代器

Foreach语法可以用于任何Collection对象。
示例代码:

import java.util.*;public class Containers{    public static void main(String[]args){        Collection<String> collection=new LinkedList<String>();        collection.add("this");        collection.add("is");        collection.add("a");        collection.add("Java");        collection.add("program");        for(String str:collection){            System.out.println(str);        }    }}
原创粉丝点击