day18天

Set集合

Set 接口的特点就是:

1,        不包含重复的元素;

2,        没有索引

3,        无序的集合(存储和取出是无序的)

它的下边有两个小弟:

Hashset 和treeset

哈希值:

说道哈希那就一定要从哈希值开始说起,这个底层是一个算法,他会给每个对象一个十进制的数.就像人的身份证号码一样.

1,hashset:

Set的子类HashSet的底层是hashmap

特点:底层是个哈希表结构,依靠对象的哈希值;

线程不安全,运行的速度快.

集合为了保证自己的唯一性,他依靠对象自己的哈希值和equals方法;要求存储到集合中的对象自己必须实现hashcode 和equals方法.

哈希表的具体的存储过程:

1,调用存储方法,hashcode 获得对象的哈希值(得到一个十进制的数字)

2,如果这个值没有出现过就把这个值放在十进制的下边,如果这个值出现过那么久吧后来出现的对象调用自己的equals方法把已经有的对象当做参数传递进来,做比较.

那么只有两种结果:equals返回的是true:获得对象的hashcode,判断是同一个对象那么久不存储了.

如果返回来的是个false,就让后来的这个对象记录前一个对象的地址,挂靠在前一个的后边.

Eg:一个person类重写hashcode:

//前提是必须有成员变量,name,age

Public int hashcode(){

return name,hashcode()+age;

}

Eg:重写equals方法:

Public double equals(Object obj){

//判断是否为空

If(p!=0);

Return false;

//判断

If(this==obj);

Return true;

//判断是否属于父类

If(obj instendsof Person){

//强转

Person p = (person)obj;

//本类中的对象和传递进来的对象相比较,并且判断年龄是否相等

Return( this.name).equal (p.name)&& this.age == p.age;

}

Return false;

}

treeSet:

特点:

1,底层是map

2,可以对线程进行排序

3,线程不安全,运行速度快

排序的方式有两种:

1,使用元素的自然顺序进行排序,comparable接口(java.ang包下边的)

2,可以使用比较器comprator(java.util包下的)

TreeSet的构造方法

TreeSet (compare<?>compare)  根据指定的构造器进行排序

他的底层是个红黑树(也称为二叉数组)

每个节点上都有两个元素

正数往右,负数往左  零不往里边存

时间: 2024-10-11 18:14:16

day18天的相关文章

python_way day18 html-day4, 模板

python_way day18 html-day4 模板语言之母板的使用 在我们写一些后台管理页面的时候,因为后台的样式,布局基本一致,只有页面右侧数据展示部分不同,我们就为了省去重复的写多个一样的页面就还可以使用模板的母板功能,类似于写一个函数,每次调用这个函数就可以完成相同的工作了. 母板: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">

传z播客 刘意_2015年Java基础视频笔记(day18~)(2016年3月7日00:25:16)

day18 1.Map引入 Map是区分于Collection的另外一个"老大" 作为学生来说,是根据学号来区分不同的学生的,那么假设我现在已经知道了学生的学号,我要根据学号去获取学生姓名,请问怎么做呢? 如果采用前面讲解过的集合,我们只能把学号和学生姓名作为一个对象的成员,然后存储整个对象,将来遍历的时候,判断,获取对应的名称. 但是呢,如果我都能把学生姓名拿出来了,我还需要根据编号去找吗? 针对我们目前的这种需求:仅仅知道学号,就想知道学生姓名的情况,Java就提供了一种新的集合 

Python基础day-18[面向对象:继承,组合,接口归一化]

继承: 在Python3中默认继承object类.但凡是继承了object类以及子类的类称为新式类(Python3中全是这个).没有继承的称为经典类(在Python2中没有继承object以及他的子类都是经典类.) 继承是类与类的关系,解决了代码重用的问题,减少冗余代码.在Python中是先定义父类,然后在定义子类.最后使用 子类来实例化对象. "继承是一种什么是什么的关系.例如:下面的s1是obj的子类." #父类的定义:class obj: #定义一个obj类 pass class

Python之路,Day18 - 开发一个WEB聊天来撩妹吧

Python之路,Day18 - 开发一个WEB聊天来撩妹吧 本节内容: 项目实战:开发一个WEB聊天室 功能需求: 用户可以与好友一对一聊天 可以搜索.添加某人为好友 用户可以搜索和添加群 每个群有管理员可以审批用户的加群请求,群管理员可以用多个,群管理员可以删除.添加.禁言群友 可以与聊天室里的人进行临时会话(与qq群一样) 可以在群中发图片 可以与好友一对一发文件 知识必备: django html\css\js bootstrap jquery, ajax 前景介绍 首先我们知道http

leetcode -day18 Balanced Binary Tree

测试源码: //测试派生类的构造函数的调用顺序何时调用 //Fedora20 gcc version=4.8.2 #include <iostream> using namespace std; class base { public: base() { cout<<"base created!"<<endl; } ~base() { cout<<"base destroyed!"<<endl; } };

day18(JDBC事务&连接池介绍&DBUtils工具介绍&BaseServlet作用)

day18总结 今日思维导图: 今日内容 事务 连接池 ThreadLocal BaseServlet自定义Servlet父类(只要求会用,不要求会写) DBUtils à commons-dbutils ? 事务 ? 事务的四大特性:ACID: mysql中操作事务 jdbc中操作事务 ? ? ? 事务概述 为了方便演示事务,我们需要创建一个account表: CREATE TABLE account( ????id INT PRIMARY KEY AUTO_INCREMENT, ????NA

[Java视频笔记]day18

类 System: 类中的方法和属性都是静态的. out: 代表标准输出,默认是控制台. in: 标准输入,默认是键盘. 描述系统的一些信息. 获取系统属性信息:Properties getProperties(); import java.util.*; class day18 { public static void main(String[] args) { Properties prop = System.getProperties(); //因为Properties是HashTable

Day18 (二)反射

反射机制是什么 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. 反射机制能做什么 反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类: 在运行时构造任意一个类的对象: 在运行时判断任意一个类所具有的成员变量和方法: 在运行时调用任意一个对象的方法: 生成动态代理. 反射机制的优点与缺点  为什么要用反射机制?直接创建对象不就可以了吗

黑马day18 鼠标事件&amp;amp;图片变大

有时候我们在淘宝网或者京东商城上浏览要购买的商品的时候当把鼠标移动到图图片上的时候会发现图片放大.然后鼠标移动,图片也会跟着移动,接下来我就使用jquery来实现这样的效果: 这是图片文件夹: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html x

python day18

  Web框架     请求周期     处理用户请求       放置HTML模版        操作数据库     Controllers         Views               Modals           Views             Template            Modals         MVC/MTV             Django => MTV        Django            1.安装         pip3 ins