如果偷懒,没有设定equals(),就会造成返回hashCode虽然结果相同,但在程序执行的过程中会多次地调用equals(),从而影响程序执行的效率。

我们要保证相同对象的返回的hashCode一定相同,也要保证不相同的对象的hashCode尽可能不同(因为数组的边界性,hashCode还是可能相同的)。例子:

public int hashCode(){

return name.hashcode()+age;

}

这个例子保证了相同姓名和年龄的记录返回的hashCode是相同的。

使用hashSet的优点:

hashSet的底层是数组,其查询效率非常高。而且在增加和删除的时候由于运用的hashCode的比较开确定添加元素的位置,所以不存在元素的偏移,所以效率也非常高。因为hashSet查询和删除和增加元素的效率都非常高。

但是hashSet增删的高效率是通过花费大量的空间换来的:因为空间越大,取余数相同的情况就越小。HashSet这种算法会建立许多无用的空间。

使用hashSet接口时要注意,如果发生冲突,就会出现遍历整个数组的情况,这样就使得效率非常的低。

 package TomTexts;

 class Student         //定义Student类
{
String name; //姓名
int age; //年龄
public Student(String pname,int page) //构造函数
{
name=pname;
age=page;
}
}
public class TomTexts_14 //定义主类
{
public static void main(String [] args)
{
Student [] e=new Student[5]; //声明Student对象数组
e[0]=new Student("张三",25); //调用构造函数,初始化对象元素
e[1]=new Student("李四",30);
e[2]=new Student("王五",35);
e[3]=new Student("刘六",28);
e[4]=new Student("赵七",32);
System.out.println("平均年龄"+getAverage(e));
getAll(e);
}
static int getAverage(Student [] d) //求平均年龄
{
int sum=0;
for (int i=0;i<d.length;i++)
sum=sum+d[i].age;
return sum/d.length;
}
static void getAll(Student [] d) //输出所有信息
{
for (int i=0;i<d.length;i++)
System.out.println(d[i].name+d[i].age);
}
}

hashSet的底层是数组,其查询效率非常高的更多相关文章

  1. HashSet的底层

    今天看博客,发现有个哥哥写到 HashSet的底层是数组结构,有点懵逼,不是HashMap吗怎么成数组了? 遂去查了下源码: 得以下结论: HashSet底层是 HashMap,其元素是内部map的k ...

  2. ArrayList具有数组的查询速度快的优点以及增删速度慢的缺点

    LinkedList接口(在代码的使用过程中和ArrayList没有什么区别) ArrayList底层是object数组,所以ArrayList具有数组的查询速度快的优点以及增删速度慢的缺点. 而在L ...

  3. 提高MySQL数据库查询效率的几个技巧(转载)

    [size=5][color=Red]提高MySQL数据库查询效率的几个技巧(转)[/color][/size]      MySQL由于它本身的小巧和操作的高效, 在数据库应用中越来越多的被采用.我 ...

  4. SQL 提高查询效率

    1.关于SQL查询效率,100w数据,查询只要1秒,与您分享: 机器情况p4: 2.4内存: 1 Gos: windows 2003数据库: ms sql server 2000目的: 查询性能测试, ...

  5. 疑难杂症——EF+Automapper引发的查询效率问题解析

    前言:前面总结了一些WebApi里面常见问题的解决方案,本来打算来分享下oData+WebApi的使用方式的,奈何被工作所困,只能将此往后推了.今天先来看看EF和AutoMapper联合使用的一个问题 ...

  6. mysql 实战 or、in与union all 的查询效率

    OR.in和union all 查询效率到底哪个快. 网上很多的声音都是说union all 快于 or.in,因为or.in会导致全表扫描,他们给出了很多的实例. 但真的union all真的快于o ...

  7. 提高SQL查询效率(SQL优化)

    要提高SQL查询效率where语句条件的先后次序应如何写 http://blog.csdn.net/sforiz/article/details/5345359   我们要做到不但会写SQL,还要做到 ...

  8. 提高SQL的查询效率

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引.   2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使 ...

  9. SQL查询效率:100w数据查询只需要1秒钟

    G os: windows 数据库: ms sql server 目的: 查询性能测试,比较两种查询的性能 SQL查询效率 step by step -- setp . -- 建表 create ta ...

随机推荐

  1. Open War I: 野王复活与视野,望远镜视野,近距离射击,远程狙击

    Below demos For: 1- 野王复活与视野,近距离射击. 2- 野王视野之外,无法近距离射击,实现望远镜视野, 远程狙击 Share the source codes with your ...

  2. JDK1.5 AtomicLong实例

    JDK1.5 AtomicLong实例 类 AtomicLong 可以用原子方式更新的 long 值.有关原子变量属性的描述,请参阅 java.util.concurrent.atomic 包规范.A ...

  3. 开发移动 APP 时,你应注意这 5 个细节

    智能手机的普及带动了大批移动应用的诞生,这些应用能够帮助人们解决日常生活所面临的种种问题.Smart Insights 发表的一份报告指出,移动应用占人们使用智能手机总时间的89%,因此,为了确保你所 ...

  4. [Swift A]-问号&感叹号

    1.必须赋值的变量,或普通变量 var month:Int println("month:\(month)") 上面这2句代码会提示报错,因为没有赋值 2.再看看如下写法 var ...

  5. ie 已限制此网页运行脚本或Active控件

      ie 已限制此网页运行脚本或Active控件 CreateTime--2018年3月12日16:49:43 Author:Marydon 情景还原: 在本地调试html页,如果其中包含js或fla ...

  6. spring mvc 返回json的配置

    转载自:http://my.oschina.net/haopeng/blog/324934 springMVC-servlet.xml 配置 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

  7. js 将网页生成为html保存访问

    2012-04-03 今天实现了一个需求,主题是将浏览中的网页生成html保存起来,记录访问url,挂在公司网站上做案例.     首先忙活了N久的是去搜索生成html的js函数.   什么IE自带的 ...

  8. GPU 编程入门到精通(四)之 GPU 程序优化

    博主因为工作其中的须要,開始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识,鉴于之前没有接触过 GPU 编程.因此在这里特地学习一下 GPU 上面的编程.有志同道合的小伙伴 ...

  9. ctags简明用法

    1.安装: sudo apt install ctags 2.生成tags文件: //进入目标目录 ctags -R . 3.在vim中设置tags的绝对目录,这样就可以在任何子目录使用了. :set ...

  10. 常用Linux shell命令汇总

    1.检查远程端口是否对bash开放:echo >/dev/tcp/8.8.8.8/53 && echo "open" 2.让进程转入后台:Ctrl + z 3 ...