java api接口篇(二)上 - 编程入门网
对照类似行,假设你要了解两个Map对象是否包含所有所有相同键的映射:
图来说,这是没必要的,因为后备Map的put和putAll提供了相同的功能。 假设你具有一个映射,代表一个属性-值对集合;以及两个sets, 表示要求的属性和允许的属性(允许的属性包括要求的属性)。下列代码可判定该属性映射是否符合那些限定条件,如果不符合,则打印详细的出错消息:
假设你想了解由两个Map对象公用的所有键:
类似的惯用程序使你可以获得公共值以及公共键-值对。要获得公共键-值对,则需格外小心; 因为结果Set的元素(即Map.Entry对象)在Map被更改后,可能是无效的。到目前为止,所有惯用程序都是"非破坏性的":它们不更改后备Map。下面是一些更改后备Map的例子。假设你要删除一个Map与另一个Map所共有的所有键-值对: m1.entrySet().removeAll(m2.entrySet()); 假设你要从一个Map中删除所有在另一个Map中具有映射的键: m1.keySet().removeAll(m2.keySet()); java api接口篇(二)上(4)时间:2010-12-24当你在同样的批量操作中开始混合键和值时,发生了什么事情呢?假设你有一个称作managers的Map, 它将公司中的每个雇员与该雇员的经理相映射。我们对键和值对象的类型是不清楚的。这不要紧, 只要它们是相同的类型就可以了。现在,假设你要知道全部的"个体贡献者"是谁? (这是为不是经理的雇员所用的公司语言)。下面的一行程序准确地告诉你所要了解的东西:
假设你要辞退直接向某些经理报告的雇员(我们称他为herbert):
请注意,这个惯用程序利用了Collections.singleton, 它是一个静态方法,可返回一个永恒的带有单一特定元素的Set。 一旦完成了这些工作,你就可能有了一帮雇员,他们的经理不再为公司工作(如果任何herbert的直接报告是他们自己的经理)。下列代码告诉你所有的他们的经理不再为公司工作的雇员:
这个例子是一个小的技巧。首先,它作了一个Map的临时拷贝,然后又从这个临时拷贝中删除所有的经理值是初始Map中的键的项。记住这个初始Map包含一个为每一个雇员准备的项。于是,在临时Map中保留的项包含了初始Map中的经理值不再是雇员。在临时拷贝中的键则恰恰表示了我们正在寻找的雇员的所有项。如果你把这个例子多看看,你就应该全清楚了。如果还不清楚,该去拿一杯热气腾腾刚酿好的Java饮料了。 还有许多与本章中的惯用程序类似的例子,但要把它们全列出来则过于烦琐,也是不实际的,一旦你掌握了它的用法,你就很容易在你需要它的时候拿出正确 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |