HashMap存储元素采用的是hash表存储数据,每存储一个对象的时候,都会调用其hashCode()方法,算出其hash值,如果相同,则认为是相同的数据,直接不存储,如果hash值不同,则再调用其equals方法进行比较,如果返回true,则认为是相同的对象,不存储,如果返回false,则认为是不同的对象,可以存储到HashMap集合中. 之所以key不能为基本数据类型,则是因为基本数据类型不能调用其hashcode()方法和equals()方法,进行比较,所以HashMap集合的key只能为…
1.redis命令客户端 [root@localhost bin]# ./redis-cli 127.0.0.1:6379> #是否运行着 127.0.0.1:6379> ping PONG Redis五种数据类型:String.Hash.List.Set.SortedSet Redis中所有的数据都是字符串.命令不区分大小写,key是区分大小写的.Redis是单线程的.Redis中不适合保存内容大的数据. String:key-value(做缓存) set key值 value值 127.0…
redis默认自带16个库select 7切换到redis第8个数据库dbsize查看reids有几个keykeys *查看所有k,vclear清空控制台FLUSHDB清空当前数据库的kvFLUSHALL清空redis所有数据库的数据exists kl判断是否存在这个keymove kl 1将kye=kl的剪切到第2个库中ttl kl(判断kl还有几秒过期)expire kl 10(设置kl10秒后过期)del kl(删除kl)type kl(查看key的类型)lpush mylist 1 2…
之前一直不是很理解为什么要重写HashCode和Equals方法,才只能作为键值存储在HashMap中.通过下文,可以一探究竟. 首先,如果我们直接用以下的Person类作为键,存入HashMap中,会发生发生什么情况呢? public class Person { private String id; public Person(String id) { this.id = id; } } import java.util.HashMap; public class Main { public…
Redis的五大数据类型 redis的数据都是以key/value存储,所以说,五大类型指的是value的数据类型 String 字符串,作为redis的最基本数据类型 redis中的string类型是二进制安全,即它可以保存任何数据,比如一张图片序列化为一段二进制字符串 redis的string类型大小上限是512M List 简单有序字符串列表,安装插入的顺序排序. 在redis中,我们可以选择性是从list的同步还是尾部插入元素.在获取list里面的元素的时候, 也可以选择性是从头部还是尾…
  redis是一个key-value形式的数据缓存,因此包括key和value. 一.key的说明 1.redis的key   Redis的key是字符串类型,但是key中不能包括边界字符,由于key不是binary safe的字符串,所以key不能空格和换行. 2.key的相关指令 exists key    检测指定key是否存在,返回1表示存在,0表示不存在. del key1 key2......keyN    删除给定的key,返回删除key的数目,0表示给定的key不存在. typ…
在HashMap中,为什么不能使用基本数据类型作为key? 其实和HashMap底层的存储原理有关,HashMap存储数据的特点是:无序.无索引.不能存储重复元素. 存储元素采用的是hash表存储数据,每存储一个对象的时候,都会调用其hashCode()方法,算出其hash值,如果相同,则认为是相同的数据,直接不存储,如果hash值不同,则再调用其equals方法进行比较,如果返回true,则认为是相同的对象,不存储,如果返回false,则认为是不同的对象,可以存储到HashMap集合中. 之所…
大家都知道,HashMap的是key-value(键值对)组成的,这个key既可以是基本数据类型对象,如Integer,Float,同时也可以是自己编写的对象,那么问题来了,这个作为key的对象是否能够改变呢?或者说key能否是一个可变的对象?如果可以该HashMap会怎么样? 可变对象 可变对象是指创建后自身状态能改变的对象.换句话说,可变对象是该对象在创建后它的哈希值(由类的hashCode()方法可以得出哈希值)可能被改变. 为了能直观的看出哈希值的改变,下面编写了一个类,同时重写了该类的…
在之前的项目需要用到以自定义类型作为HashMap的key,遇到一个问题:如果修改了已经存储在HashMap中的实例,会发生什么情况呢?用一段代码来试验: import java.util.HashMap; import java.util.Map; public class TestHashMap { public static void main(String[] args) { testObjAsKey(); } private static void testObjAsKey() { c…