如何用map对象创建set对象-java开发java经验技巧

如何用map对象创建set对象-java开发java经验技巧

ID:31015744

大小:70.00 KB

页数:3页

时间:2019-01-05

如何用map对象创建set对象-java开发java经验技巧_第1页
如何用map对象创建set对象-java开发java经验技巧_第2页
如何用map对象创建set对象-java开发java经验技巧_第3页
资源描述:

《如何用map对象创建set对象-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、如何用Map对象创建Set对象・编程开发技术如何用Map对象创建Set对象木文由ImportNew■夏T淋翻译自javaspecialistso欢迎加入翻译小组。转载请见文末要求。Java中的Map和Set有不少相似之处。本文将分享一个把Map类转化成Set类的小技巧。或许你已经知道,HashSet-其实是一个披着Set方法外衣的HashMap;同样,TreeSet其实也是一个披着Set方法外衣的TreeMap。Map并不支持直接用迭代器进行遍历,因此下面的这段代码编译无法通过:Map

2、oublc>salaries=newIlashMap<>();for(doublesalary:salaries){//doesnotcompile}我们可以通过遍历Map屮的key集合、value集合和entry集合来实现Map的遍历。曲于Map中的value是可以重复出现的,因此values()方法返回的是一个Collection类型的集合。而Map中的key是不允许重复的,因此kcySct()方法和entrySet()返回的都是Set类型的集合。因此,我们可以采用下面的方法來遍WMap:Map

3、tring,Double>salaries二newHashMapO();for(doublesalary:salaries・valucs()){}或者可以通过遍历key来遍历Map:Mapsalaries=newHashMapO();for(Stringname:salaries・kcySct()){}当然,述可以通过遍历entry来遍历Map:Mapsalaries二newHashMapO();for(Map.Entry

4、ble>cntry:salaries・cntrySct()){Stringname=entry.getKey();doublesalary=entry.getValue();我经常看到程序员这样遍WMap:先获取keyset,然后对keys进行遍丿力,并通get()方法找到对应的value。Mapsalaries=newIlashMap<>();for(Stringname:salaries・kcySct()){//lessofficientwaytodoublesalar

5、y=salaries・get(name);//iterateoverentries从直观上看,采用遍历entry的方式遍历Map会更加高效一些,这种遍历方式的时间复杂度是0(n)。然而,如果HashMap中的元素分布均匀,调用get()方法查找元素的时间复杂度将是0(1),那么这两种方法遍历HashMap的时间复杂度是一样的,都是0(n)o这两种遍历方式虽然有所不同,但时间复杂度都是线性的。但这个结论并不适用于其它类型的Map,特别是TreeMapoTreeMap的平均查找效率是0(logn),因此通过

6、keySet遍历TreeMap的吋间复杂度是0(nxlogn)。java,ut订包中有很多Map类,其中一些Map类有着对应类型的Set类实现,例如TreeMap和HashMap。这些Set类都是基于对应的Map类实现的,因此它们和对应的Map类保持相同的算法复杂度以及并发特性。本文的重点来了。我在完成并发专修课程中的某道练习题时,需要一个快速高效并且线程安全的HashSeto起初,我直接把ConcurrentHashMap当作Set用,把要插入Set的元索以Key的形式插入Map,Key所对应的Val

7、ue则是一个无意义的默认值。后來我发现,Jqvei6中的java.util.Collections类提供了一个newSetFromMap()方法,该方法能够基于指定的Map对彖创建一个新的Set对彖。在创建这个Map

8、etTest{publicstaticvoidni3in(String[]args){Setnames=Collections.newSetFromMap(newConcurrentHashMap());names,add("BrianGoetz");names・3dd("VictorGrazi");names.add("HeinzKabutz");names,add(,zBrianGoetz

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。