71.【Java.哈希表(散列表)】

简介: 71.【Java.哈希表(散列表)】

1.哈希表的添加(put)

1. put(key,value);对我们所设置的键值对进行赋值的操作;
2. 添加到Map中的数据,与List不一样,是没有顺序的。顺序是根据哈希算法得出的
import java.util.HashMap;
public class Hash {
    public static void main(String[] args) {
      HashMap<String,Double> hashMap=new HashMap<>(10);
      hashMap.put("apple",3.5);
      hashMap.put("organ",1.5);
      hashMap.put("bannda",7.5);
      System.out.println(hashMap);
    }
}

2.哈希表的查询(get)

1.get(key),我们可以通过key找到我们需要的值。
2.通过商品名字查找价格.
import java.util.HashMap;
public class Hash {
    public static void main(String[] args) {
      HashMap<String,Double> hashMap=new HashMap<>(10);
      hashMap.put("apple",3.5);
      hashMap.put("organ",1.5);
      hashMap.put("bannda",7.5);
      System.out.println(hashMap.get("apple"));
    }
}

3.哈希表中是否存在(containsKey/containsValue)

1.containsKey(key);判断key是否包含在这个哈希表中,如果存在true,否则false
2.查看苹果和小猪是否在集合中。
import java.util.HashMap;
public class Hash {
    public static void main(String[] args) {
      HashMap<String,Double> hashMap=new HashMap<>(10);
      hashMap.put("apple",3.5);
      hashMap.put("organ",1.5);
      hashMap.put("bannda",7.5);
      System.out.println(hashMap.containsKey("apple"));
      System.out.println(hashMap.containsKey("pig"));
    }
}

3.containsValue(value);通过value查找是否存在键值对
import java.util.HashMap;
public class Hash {
    public static void main(String[] args) {
      HashMap<String,Double> hashMap=new HashMap<>(10);
      hashMap.put("apple",3.5);
      hashMap.put("organ",1.5);
      hashMap.put("bannda",7.5);
      System.out.println(hashMap.containsValue(3.2));
      System.out.println(hashMap.containsValue(3.5));
    }
}

4.哈希表返回所有Set映射(entrySet)

1.entrySet();返回所有的键值对
import java.util.HashMap;
public class Hash {
    public static void main(String[] args) {
      HashMap<String,Double> hashMap=new HashMap<>(10);
      hashMap.put("apple",3.5);
      hashMap.put("organ",1.5);
      hashMap.put("bannda",7.5);
      System.out.println(hashMap.entrySet());
    }
}

2.哈希表的名字,也可以实现对数据的全部输出
import java.util.HashMap;
public class Hash {
    public static void main(String[] args) {
      HashMap<String,Double> hashMap=new HashMap<>(10);
      hashMap.put("apple",3.5);
      hashMap.put("organ",1.5);
      hashMap.put("bannda",7.5);
      System.out.println(hashMap);
    }
}

5.哈希表返回所有key值(keyset)

1.keySet();返回所有的key值
import java.util.HashMap;
public class Hash {
    public static void main(String[] args) {
      HashMap<String,Double> hashMap=new HashMap<>(10);
      hashMap.put("apple",3.5);
      hashMap.put("organ",1.5);
      hashMap.put("bannda",7.5);
      System.out.println(hashMap.keySet());
    }
}

6.判断哈希表是否为空(isempty)

1.isempty();判断是否为空,如果为空true,反之false

5.哈希表默认值选项(getOrDefault)

8.哈希表对象的复制添加(putAll)

1.putAll(hashMap); 哈希表的复制添加
2.如果在复制的时候,被添加的key值等于key值,会对被添加的值进行覆盖。
import java.util.HashMap;
public class Hash {
    public static void main(String[] args) {
      HashMap<String,Double> hashMap=new HashMap<>(10);
      hashMap.put("apple",3.5);
      hashMap.put("organ",1.5);
      hashMap.put("bannda",7.5);
    HashMap<String,Double> hashMap1=new HashMap<>(10);
      hashMap1.put("apple1",0.5);
      hashMap1.put("organ2",5.5);
      hashMap1.put("bannda",8.5);
//      将哈希集合2的对象全部添加到对象一中
      hashMap.putAll(hashMap1);
        System.out.println(hashMap.entrySet());
    }
}

9.哈希表的遍历(entrySet/keySet遍历法)

entrySet:
1.for(Map.Entry entry:要遍历的哈希对象.entrySet())
import java.util.HashMap;
import java.util.Map;
public class Hash {
    public static void main(String[] args) {
      HashMap<String,Double> hashMap=new HashMap<>(10);
      hashMap.put("apple",3.5);
      hashMap.put("organ",1.5);
      hashMap.put("bannda",7.5);
      for(Map.Entry entry:hashMap.entrySet()){
          System.out.println(entry.getKey()+" "+entry.getValue());
      }
    }
}

1.keySet遍历法:
Set<String> keys = hashMap.keySet();
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Hash {
    public static void main(String[] args) {
      HashMap<String,Double> hashMap=new HashMap<>(10);
      hashMap.put("apple",3.5);
      hashMap.put("organ",1.5);
      hashMap.put("bannda",7.5);
      Set<String> keys = hashMap.keySet();
      for (String key:keys){
          System.out.println(key+" "+hashMap.get(key));
      }
    }
}

10.哈希表的移除(remove)

remove(); 哈希表的移除操作。
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Hash {
    public static void main(String[] args) {
      HashMap<String,Double> hashMap=new HashMap<>(10);
      hashMap.put("apple",3.5);
      hashMap.put("organ",1.5);
      hashMap.put("bannda",7.5);
      hashMap.remove("apple");
        System.out.println(hashMap);
    }
}


相关文章
|
1月前
|
存储 算法 Java
[Java]散列表的数据结构以及对象在JVM堆中的存储过程
[Java]散列表的数据结构以及对象在JVM堆中的存储过程
69 1
[Java]散列表的数据结构以及对象在JVM堆中的存储过程
|
24天前
|
存储 Java 索引
JAVA中的哈希表实现与应用
JAVA中的哈希表实现与应用
24 1
|
1月前
|
存储 Java Serverless
Java哈希表
Java哈希表
8 0
|
1月前
|
存储 安全 Java
【亮剑】`ConcurrentHashMap`是Java中线程安全的哈希表,采用锁定分离技术提高并发性能
【4月更文挑战第30天】`ConcurrentHashMap`是Java中线程安全的哈希表,采用锁定分离技术提高并发性能。数据被分割成多个Segment,每个拥有独立锁,允许多线程并发访问不同Segment。当写操作发生时,计算键的哈希值定位Segment并获取其锁;读操作通常无需锁定。内部会根据负载动态调整Segment,减少锁竞争。虽然使用不公平锁,但Java 8及以上版本提供了公平锁选项。理解其工作原理对开发高性能并发应用至关重要。
|
1月前
|
存储 缓存 安全
Java HashMap:哈希表原理、性能与优化
Java HashMap:哈希表原理、性能与优化
|
1月前
|
存储 算法 安全
【Java编程进阶之路 02】深入探索:红黑树如何重塑哈希表的性能边界
JDK 1.8之后,HashMap引入红黑树来优化性能,当链表长度超过阈值(默认为8)时,链表会转换为红黑树,从而提高高冲突时的查询效率。同时,HashMap也采用了扰动函数来增加哈希值的随机性,使键值对更均匀分布,提升性能。
41 0
|
1月前
|
存储 缓存 安全
Java ConcurrentHashMap:线程安全的哈希表实现
Java ConcurrentHashMap:线程安全的哈希表实现
|
1月前
|
存储 缓存 Java
Java LinkedHashMap:保持插入顺序的哈希表解析
Java LinkedHashMap:保持插入顺序的哈希表解析
|
1月前
|
存储 Java Serverless
哈希表原理与Java HashSet、LinkedHashSet实现
哈希表原理与Java HashSet、LinkedHashSet实现
|
1月前
|
存储 Java Serverless
二叉搜索树 和 哈希表 (JAVA)
【1月更文挑战第1天】阿里云初体验 二叉搜索树 二叉搜索树的插入 二叉搜索树的查找 二叉搜索树的删除 哈希表 哈希冲突 闭散列 线性探测法 二次探测法 开散列 二叉搜索树又称二叉排序树,它具有以下性质的二叉树或空树: 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值 它的每颗子树也分别为二叉搜索树 而哈希表是一种插入/删除/查找时间复杂度都是O(1)的数据结构,它的查询之所以也可以如此之快的的原因就是它在查找时不需要经过任何比较,直接一次从表中得到要搜索的元素。
41 0
二叉搜索树 和 哈希表 (JAVA)