集合框架体系:
集合接口,集合框架定义了一些接口。本节提供了每个接口的概述:
2.接口描述1、 Collection 接口
Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)
Collection 接口存储一组不唯一,无序的对象。
Collection接口中提供的一些常用的方法,使用于set和List:
| 函数 | 意义 |
|---|---|
| boolean add(E e) | 确保此集合包含指定的元素(可选操作) |
| boolean contains(Object o) | 如果此集合包含指定的元素,则返回 true 。 |
| boolean equals(Object o) | 将指定的对象与此集合进行比较以获得相等性。 |
| int hashCode() | 返回此集合的哈希码值。 |
| boolean isEmpty() | 如果此集合不包含元素,则返回 true 。 |
| Iterator iterator() | 返回此集合中的元素的迭代器。 |
| boolean remove(Object o) | 从该集合中删除指定元素的单个实例(如果存在)(可选操作)。 |
| int size() | 返回此集合中的元素数。 |
| Object[] toArray() | 返回一个包含此集合中所有元素的数组。 |
2、 List 接口
List接口是一个有序的 Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,而且允许有相同的元素。
List 接口存储一组不唯一,有序(插入顺序)的对象。
常见的实现类:
ArrayList、linkedList
3、 Set
Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素。Set 接口存储一组唯一,无序的对象。
常见的实现类:
HashSet
4、 SortedSet
继承于Set保存有序的集合。
5、 Map
Map 接口存储一组键值对象,提供key(键)到value(值)的映射。
常见的实现类:
HashMap ,linkedHashMap
map接口中一些常用的方法:
| 函数 | 意义 |
|---|---|
| V put(K key, V value) | 将指定的值与该映射中的指定键相关联(可选操作)。 |
| V remove(Object key) | 如果存在(从可选的操作),从该地图中删除一个键的映射。 |
| default V replace(K key, V value) | 只有当目标映射到某个值时,才能替换指定键的条目 |
| default boolean replace(K key, V oldValue, V newValue) | 仅当当前映射到指定的值时,才能替换指定键的条目。 |
| boolean containsKey(Object key) | 如果此映射包含指定键的映射,则返回 true 。 |
| boolean containsValue(Object value) | 如果此地图将一个或多个键映射到指定的值,则返回 true 。 |
| Set | 返回此地图中包含的映射的Set视图。 |
| Set keySet() | 返回此地图中包含的键的Set视图。 |
| V get(Object key) | 返回到指定键所映射的值,或 null如果此映射包含该键的映射。 |
| int hashCode() | 返回此地图的哈希码值。 |
| Collection values() | 返回此地图中包含的值的Collection视图。 |
| int size() | 返回此地图中键值映射的数量。 |
| boolean equals(Object o) | 将指定的对象与此映射进行比较以获得相等性。 |
6 Map.Entry
描述在一个Map中的一个元素(键/值对)。是一个 Map 的内部接口。
7 SortedMap
继承于 Map,使 Key 保持在升序排列。
8 Enumeration
这是一个传统的接口和定义的方法,通过它可以枚举(一次获得一个)对象集合中的元素。这个传统接口已被迭代器取代。
import java.util.*;
public class Test{
public static void main(String[] args) {
List list=new ArrayList();
list.add("Hello");
list.add("World");
list.add("HAHAHAHA");
//第一种遍历方法使用 For-Each 遍历 List
for (String str : list) {
//也可以改写 for(int i=0;i ite=list.iterator();
while(ite.hasNext())//判断下一个元素之后有值
{
System.out.println(ite.next());
}
}
}
4.map集合遍历
Map是java中的接口,Map.Entry是Map的一个内部接口。
Map提供了一些常用方法,如keySet()、entrySet()等方法。
keySet()方法返回值是Map中key值的集合;entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry。
Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry
map不能直接使用迭代器因为map没有像set继承Collection所以得如下方式使用
import java.util.*;
public class Test{
public static void main(String[] args) {
Map map = new HashMap();
map.put("1", "value1");
map.put("2", "value2");
map.put("3", "value3");
//第一种:普遍使用,二次取值
System.out.println("通过Map.keySet遍历key和value:");
for (String key : map.keySet()) {
System.out.println("key= "+ key + " and value= " + map.get(key));
}
//第二种
System.out.println("通过Map.entrySet使用iterator遍历key和value:");
Iterator> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = it.next();
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
//第三种:推荐,尤其是容量大时
System.out.println("通过Map.entrySet遍历key和value");
for (Map.Entry entry : map.entrySet()) {
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
//第四种
System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
for (String v : map.values()) {
System.out.println("value= " + v);
}
}
}



