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比较,来最快的查

找才是它的目的

最新文章

  1. assets 加载资源文件
  2. 【转】Backbone标准例子——通讯录
  3. 关于WPF中文件夹浏览对话框的方式
  4. centos 7.0 查看内存使用情况 和 查看硬盘使用情况
  5. ORACLE AUTOMATIC STORAGE MANAGEMENT翻译-第二章ASM Instance(4)完
  6. CSS 之 清除 float 常用的方法
  7. 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客
  8. yii教程
  9. poj3233(矩阵快速幂)
  10. ASP.NET农历时间显示(两)
  11. [HMLY]8.Cocoa
  12. 成熟的C#网络通信框架介绍——ESFramework通信框架
  13. 《HTTP权威指南》读书笔记(二) :URL与资源
  14. C#最简单的连接数据库的方法
  15. Ubuntu14.04 编译 Android 5.1.1源码(采用国内镜像)
  16. 移动端head头部常用meta标签
  17. 【Java】 剑指offer(25) 合并两个排序的链表
  18. Windows下多线程编程(二)
  19. 《DSP using MATLAB》Problem 2.16
  20. MVC 手机端页面 使用标签file 图片上传到后台处理

热门文章

  1. MapReduce源码分析之InputFormat
  2. sublime使用技巧(4)-- 其他技巧【持续更新】
  3. Intellij idea 切换SVN路径
  4. 软件测试人员需要精通的开发语言(3)--- Linux
  5. vim对光标所在的数字进行增减
  6. full stack on the road
  7. 【python】-- 基本语法、循环
  8. Delphi 7里Messages.pas里所有104种重定义消息种类,180种不同的消息名称
  9. vue前戏ES6
  10. IO多路复用的作用?并列举实现机制以及区别?