• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
山高我为峰
博客园    首页    新随笔    联系   管理    订阅  订阅
hash算法打散存储文件

1.首先,为防止一个目录下面出现太多文件,所以使用hash算法打散存储

举例代码:

               int hashcode = filename.hashCode();//得到hashCode

               int dir1 = hashcode & 0xf; //得到名为1到16的下及文件夹

               int dir2 = (hashcode & 0xf0) >> 4; //得到名为1到16的下下及文件夹

               String dir = savePath + "\\" + dir1 + "\\" + dir2; //得到文件路径

从这段代码可以看出,如果一定要研究它的规律,那就要说说hashCode()方法,"直接定址”与“解决冲突”是哈希表的两大特点,

不同的对象hashCode是有可能会相同的,并且hashCode方法是可以自己重写的,想让它有规律可以重写.重写我不会.就不瞎说了.

如果只是使用hash算法打散存储,进行存取文件时,不用考虑hashCode,因为只要知道文件的名称,存和取所产生的dir1和dir2是一样的,文件的路径就可以确定.

 

备注:

对于hashCode()来说,无论何时,对同一个对象调用hashCode()都应该产生同样的值。

哈希表的优点,就是把数据的存储和查找消耗的时间大大降低,用空间换时间,所以消耗适当大的内存,产生适当相同的hashCode再使用equals比较,来最快的查

找才是它的目的

posted on 2017-06-20 16:32  山高我为峰  阅读(3213)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3