map.entry
来谈谈集合中的Map接口,它常用的实现类为HashMap。
Map接口
- 除了类集,java 2还在java.util中增加了映射。 映射(map)是一个存储关键字和值的关联 或者说是关键字/值对的对象。给定一个关 键字,可以得到它的值。关键字和值都是 对象。关键字必须是唯一的。但值是可以 重复的。有些映射可以接收null关键字和 null值。而有的则不行
- Map接口映射唯一关键字到值。关键字(key)是 以后用于检索值的对象。给定一个关键字和一个 值,可以存储这个值到一个Map对象中。当这个 值被存储以后,就可以使用它的关键字来检索它。 当调用的映射中没有项存在时,其中的几种方法 会引发一个NoSuchElementException异常。而当对 象与映射中的元素不兼容时,引发一个 classcastexception异常。如果试图使用映射不允 许使用的null对象时,则引发一个 NullPointerException异常。当试图改变一个不允 许修改的映射时,则引发一个 UnsupportedOperationException异常
- 映射循环使用两个基本操作:get( )和put( )。使用 put( )方法可以将一个指定了关键字和值的值加入 映射。为了得到值,可以通过将关键字作为参数 来调用get( )方法。调用返回该值。
- 映射不是类集,但可以获得映射的类集“视图”。 为了实现这种功能,可以使用entrySet( )方法,它 返回一个包含了映射中元素的集合(Set)。为了 得到关键字的类集“视图”,可以使用keySet( ) 方法,返回一个Set集合不可以重复。为了得到值的类集“视图”,可以使用 values( )方法,返回一个Collection集合,可以重复。类集“视图”是将映射集成到类集 框架内的手段
import java.util.Iterator;
import java.util.Set;
public class Maptest3
{
public static void main(String[] args)
{
HashMap map = new HashMap();
map.put("a", "aa");
map.put("b", "bb");
map.put("c", "cc");
map.put("d", "dd");
map.put("e", "ee");
System.out.println(map);
Set set = map.keySet();
for(Iterator iter = set.iterator(); iter.hasNext();)
{
String key = (String)iter.next();
String value = (String)map.get(key);
System.out.println(key + "=" + value);
}
}
}
a=aa
b=bb
c=cc
d=dd
e=ee
遍历Map的两种方式,一种是直接打印输出,另一种是利用Set集合中的iterator();方法,首先调用Map的keySet()方法返回一个Set集合,通过Set集合中key的值可以得到value的值。
HashMap
HashMap类使用散列表实现Map接口。这允 许一些基本操作如get( )和put( )的运行时间 保持恒定,即便对大型集合,也是这样的 下面的构造函数定义为:
- HashMap( )
- HashMap(Map m)
- HashMap(int capacity)
- HashMap(int capacity, float fillRatio)
第一种形式构造一个默认的散列映射。
第二种形式用m的元素初始化散列映射。
第三种形式将散列映射的容量初始化为 capacity。
第四种形式用它的参数同时初始化散列映 射的容量和填充比。容量和填充比的含义 与前面介绍的HashSet中的容量和填充比相同。
HashMap实现Map并扩展AbstractMap。它 本身并没有增加任何新的方法
应该注意的是散列映射并不保证它的元素 的顺序。因此,元素加入散列映射的顺序 并不一定是它们被迭代函数读出的顺序
Map.Entry
Map.Entry接口使得可以操作映射的输入。 回想由Map接口说明的entrySet( )方法,调 用该方法返回一个包含映射输入的集合 (Set)。这些集合元素的每一个都是一个 Map.Entry对象
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapTest5
{
public static void main(String[] args)
{
HashMap map = new HashMap();
map.put("a", "aa");
map.put("b", "bb");
map.put("c", "cc");
map.put("d", "dd");
Set set = map.entrySet();
for(Iterator iter = set.iterator(); iter.hasNext();)
{
Map.Entry entry = (Map.Entry)iter.next();
String key = (String)entry.getKey();
String value = (String)entry.getValue();
System.out.println(key + " : " + value);
}
}
}
a : aa
b : bb
c : cc
d : dd
Entry对象里面封装了key和value。
Map是key和value的映射,在Map里面key和value并不是单独存放的,在底层会生成一个entry对象,entry对象里面封装了value和key,所以获得了entry对象就可以同时获得key和value。
相关阅读
一、泛型类 定义Person类 package cn.itcast.p2.bean; public class Person implements Comparable<Person> { private Stri
目录 1 MapReduce原理 1.1 为什么要MapReduce 1.2 MapReduce框架结构及核心运行机制 1.2.1 结构 1.2.2 MR程序运行流程 1.3 MapT
USB接口标准 USB是电脑的常见接口,有4根线,两根电源线和两个信号线,电源线正负极供电,接烦可能导致USB设备或电脑的南桥芯片烧坏。 t
在32位的Windows系统中,每一个进程都有权访问他自己的4GB(232=4294967296)平面地址空间,没有段,没有选择符,没有near和far指针,没有near
1 接口无法进行实例化。不过接口可以通过匿名接口来操作。直接实现一个接口。但是是匿名的如:public interface Test1Interface {p