• C++中的set和java的hashset有何区别?


    以前对C++的STL容器烂熟于心,两年没碰过C++了,现在已经很生疏了。工作原因转战java,对java的容器不甚了解,特别是每看到一种容器,不由自主地拿起和C++对比。C++中的set和java的hashset有何区别,其实我也不太明白,google搜不到现成的答案,查了下相关资料,自己尝试做个总结,正确与否有待讨论了。

    以下set特指C++的set容器,hashset指java中的。

    1、set和hashset都不允许元素重复,但是set是有序的,hashset无顺序,所以向set插入元素必须重载<操作符比较大小,而hashset只需重载equal(),比较是否相等即可。

    2、set底层数据结构为红黑树,索引时间为log(n),而hashset基于哈希表,比set要快一些,log(1)。

    至于各自的用法,其实C++中的set我一般用来排序,懒得自己写排序函数,一堆杂乱无章的数据塞进去,取出来人家已经帮排好序了很安逸啊。java的hashset虽然没有排序的作用,但是可以帮去重呀,如果不想自己写去重的方法,直接把数据扔到hashset中,取出来就是没有重复的了。还有一个用处,数据量很大时怎么快速判断某个数是不是存在,hashset可以在log(1)的时间帮你定位哟。其它的用处暂时没想到了,毕竟还是纸上谈兵,java中复杂点的容器我通通还没有用过!

  • 相关阅读:
    关于ORA-04091异常的出现原因,以及解决方案
    <Interview problem>二进制加法
    Hadoop日志文件分析系统
    Android studio安装
    weex环境配置
    weex构建项目
    参数保存
    下拉搜索的小白demo
    angularJs中$http获取后台数据实例(搜集到的)
    前后台对接angularjs(搜集的)
  • 原文地址:https://www.cnblogs.com/victoria/p/3447405.html
Copyright © 2020-2023  润新知