如何用Map对象创建Set对象
2017-08-09 16:19
162 查看
如何用Map对象创建Set对象
http://www.importnew.com/9639.html本文由 ImportNew - 夏千林 翻译自 javaspecialists。欢迎加入翻译小组。转载请见文末要求。
Java中的Map和Set有不少相似之处。本文将分享一个把Map类转化成Set类的小技巧。
或许你已经知道,HashSet其实是一个披着Set方法外衣的HashMap;同样,TreeSet其实也是一个披着Set方法外衣的TreeMap。Map并不支持直接用迭代器进行遍历,因此下面的这段代码编译无法通过:
因此,我们可以采用下面的方法来遍历Map:
java.util包中有很多Map类,其中一些Map类有着对应类型的Set类实现,例如TreeMap和HashMap。这些Set类都是基于对应的Map类实现的,因此它们和对应的Map类保持相同的算法复杂度以及并发特性。
本文的重点来了。我在完成并发专修课程中的某道练习题时,需要一个快速高效并且线程安全的HashSet。起初,我直接把ConcurrentHashMap当作Set用,把要插入Set的元素以Key的形式插入Map,Key所对应的Value则是一个无意义的默认值。后来我发现,Java 6中的java.util.Collections类提供了一个newSetFromMap()方法,该方法能够基于指定的Map对象创建一个新的Set对象。在创建这个Map<K, V>对象时,K的数据类型必须与你想要创建的Set中元素的数据类型一致;而V必须是Boolean类型的,这是因为value字段用于标记该元素是否存在。
希望读者能从本文中有所收获。如果你曾经为找不到ConcurrentHashSet而烦恼,现在你就可以自己创建一个了。
原文链接: javaspecialists 翻译: ImportNew.com - 夏千林
译文链接: http://www.importnew.com/9639.html
[ 转载请保留原文出处、译者和译文链接。]
关于作者: 夏千林
相关文章推荐
- 如何用Map对象创建Set对象
- Map集合的实例对象中创建对象。然后通过Set集合获取
- DWR如何获得返回对象 list Map Set list.add(JavaBean)
- 如何从字符串创建Map对象
- spring如何注入List,Set,Map对象
- js创建一个MAP对象并存取值
- 将构造函数,析构函数声明为私有和保护的,那么对象如何创建?
- Java的set,map容器中如何唯一确定一个元素——hashCode()和equals()
- symbian 如何创建活动对象
- 在校生如何开始学习数据库(四) oracle创建oracle数据库对象
- 如何使用 Forms 身份验证创建 GenericPrincipal 对象
- 如何在已经分配的内存上创建对象(摘自cadn论坛)
- quick 如何创建对象的传入参数
- XAF中如何实现Action创建一个可以编辑外连接对象的detail
- 《Java编程思想》之对象的集合(数组、List、Set、Map)二
- Java中如何遍历Map对象的4种方法
- 浅析spring中创建的对象如何保证不被回收
- 深入探索.NET框架内部了解CLR如何创建运行时对象
- java中把对象、对象bean、list集合、对象数组、Map和Set以及字符串转换成Json
- 图形编程入门之如何创建用于绘制的 Graphics 对象