zoukankan      html  css  js  c++  java
  • Java HashSet使用方法教程及示例代码

    简介

    HashSet类,是存在于java.util包中的类 。同时也被称为集合,该容器中只能存储不重复的对象。本文主要介绍Java HashSet使用方法教程及示例代码,还有HashMap和HashSet的区别。

    1、Java HashSet

    HashSet实现了Set接口,它不允许集合中有重复的值,当将对象存储在HashSet之前,要先确保对象重写equals()和hashCode()方法,这样才能比较对象的值是否相等,以确保set中没有储存重复的对象。如果我们没有重写这两个方法,将会使用这个方法的默认实现。

    例如

    创建一个名为langs的HashSet对象,该对象将存储字符串:

    import java.util.HashSet; // 导入HashSet
    
    HashSet<String> langs = new HashSet<String>();

    2、访问HashSet中的元素

    HashSet类具有许多有用的方法。 例如,要向其中添加元素,请使用add()方法:

    例如

    // 导入HashSet
    import java.util.HashSet;
    
    public class Main {
      public static void main(String[] args) {
        HashSet<String> langs = new HashSet<String>();
        langs.add("c");
        langs.add("java");
        langs.add("python");
        langs.add("cjavapy");
        langs.add("javascript");
        System.out.println(langs);
      }
    }

    注意:集合中的每个元素都必须是唯一的。

    3、判断HashSet中的元素

    要判断HashSet中是否存在某个元素,请使用contains()方法:

    例如:

    langs.contains("cjavapy");

    4、删除HashSet中的元素

    要删除元素,请使用remove()方法:

    例如:

    langs.remove("cjavapy");

    要删除所有元素,请使用clear()方法:

    例如:

    langs.clear();

    5、HashSet size

    要找出有多少个元素,需要使用size方法:

    例如:

    langs.size();

    6、循环遍历HashSet中的元素

    通过for-each循环遍历HashSet的元素:

    例如:

    for (String i : langs) {
      System.out.println(i);
    }

    7、其它类型

    HashSet中的项目实际上是对象。在上面的示例中,我们创建了 项目 (对象)类型为字符串。Java中的String是一个对象(不是原始类型)。要使用其他类型,例如int,必须指定等效的包装类:Integer。对于其他基本类型,请使用:Boolean表示布尔值,Character表示char,Double表示double,等等。

    基本类型对应的包装类表如下:

    基本类型

    引用类型

    boolean

    Boolean

    byte

    Byte

    short

    Short

    int

    Integer

    long

    Long

    float

    Float

    double

    Double

    char

    Character

    例如:

    使用存储Integer对象的HashSet

    import java.util.HashSet;
    
    public class Main {
      public static void main(String[] args) {
    
        // 创建HashSet对象 
        HashSet<Integer> numbers = new HashSet<Integer>();
    
        // 添加
        numbers.add(4);
        numbers.add(5);
        numbers.add(8);
    
        // 判断指定值是否包含
        for(int i = 1; i <= 10; i++) {
          if(numbers.contains(i)) {
            System.out.println(i + " 存在numbers中");
          } else {
            System.out.println(i + " 存在numbers中");
          }
        }
      }
    }
     

    8、HashMap和HashSet的区别

    1) HashSet实现了Set接口, 仅存储对象; HashMap实现了 Map接口, 存储的是键值对.

    2) HashSet底层其实是用HashMap实现存储的, HashSet封装了一系列HashMap的方法. 依靠HashMap来存储元素值,(利用hashMap的key键进行存储), 而value值默认为Object对象. 所以HashSet也不允许出现重复值, 判断标准和HashMap判断标准相同, 两个元素的hashCode相等并且通过equals()方法返回true。

    HashMap

    HashSet

    HashMap实现了Map接口

    HashSet实现了Set接口

    HashMap储存键值对

    HashSet仅仅存储对象

    使用put()方法将元素放入map中

    使用add()方法将元素放入set中

    HashMap中使用键对象来计算hashcode值

    HashSet使用成员对象来计算hashcode值,

    对于两个对象来说hashcode可能相同,

    所以equals()方法用来判断对象的相等性,

    如果两个对象不同的话,那么返回false

    HashMap比较快,因为是使用唯一的键来获取对象

    HashSet较HashMap来说比较慢

     原文地址:https://www.cjavapy.com/article/1624/

     
  • 相关阅读:
    c++11 standardized memory model 内存模型
    C++和C API调用
    c+11 std::condition_variable and mutex
    Linux thread process and kernel mode and user mode page table
    c++ Initialization
    c++11 perfect forwarding
    C++11 template parameter deduction
    Cache缓存设计
    c++11 enable_shared_from_this
    大数相乘
  • 原文地址:https://www.cnblogs.com/lmr7/p/15432718.html
Copyright © 2011-2022 走看看