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。 |
| entrySet() | 返回此映射中包含的映射关系的 Set 视图。 |
boolean | equals(Object o) | 比较指定的对象与此映射是否相等。 |
V | get(Object key) | 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。 |
int | hashCode() | 返回此映射的哈希码值。 |
boolean | isEmpty() | 如果此映射未包含键-值映射关系,则返回 true。 |
| keySet() | 返回此映射中包含的键的 Set 视图。 |
V | put(K key, V value) | 将指定的值与此映射中的指定键关联(可选操作)。 |
void |
| 从指定映射中将所有映射关系复制到此映射中(可选操作)。 |
V | remove(Object key) | 如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。 |
int | size() | 返回此映射中的键-值映射关系数。 |
| 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);
}
}
}