算法训练——day13哈希Map、Set、Bucket

HashMap

HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。

HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。

HashMap 是无序的,即不会记录插入的顺序。

HashMap<Integer, String> ret= new HashMap<Integer, String>();//定义哈希表

//增
hashmap.put(1, "str1"); // 执行后为{1=str1}
hashmap.put(2, "str2"); // 执行后为{1=str1, 2=str2}

//删
hashmap.remove(1); // 执行后hash表内为{2=str2}
hashmap.remove(2); // 执行后hash表内为{}

//改:替换指定的key对应的 value
hashmap.replace(key,value);

//查:根据key来访问value
hashmap.get(1); // 返回str1


//清空
hashmap.clear();

//计算键对的数量
hashmap.size();

//当hashmap中有这个key时,就用对应的value,没有的话用默认值defaultValue;
hashmap.getOrDefault(key,defaultValue);

//检查是否存在对应的映射关系
hashmap.containsKey(key); //key对应的映射关系
hashmap.containsValue(value); //value对应的映射关系
hashmap.isEmpty(); //是否为空

hashmap.values(); // 返回所有Value值组成的集合
//现有HashMap: {1=str1, 2=str2}
//则返回Values: [str1, str2]

// foreach循环
    for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
		System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
	}



HashSet

HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。

HashSet 允许有 null 值。

HashSet 是无序的,即不会记录插入的顺序。

HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。

Set<Integer> hashset= new HashSet<Integer>();//定义
hashset.add(1);//增
hashset.remove(1);//删

//使用 contains() 方法来判断元素是否存在于集合当中:
hashset.contains();

//大小
hashset.size();
// 清空
hashmap.clear();

//迭代

HashSet<String> hashset= new HashSet<String>();
    hashset.add("str1");
    hashset.add("str2");
    hashset.add("str3");
    hashset.add("str2"); // 重复的元素不会被添加
    for (String i : hashset) {
        System.out.println(i);
/*输出:
str1
str2
str3
*/


 HashBucket

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值