当前位置:   article > 正文

Java HashSet_hashset计算数量

hashset计算数量

1、HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。
2、HashSet 允许有 null 值。
3、HashSet 是无序的,即不会记录插入的顺序。
4、HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。
5、HashSet 实现了 Set 接口。
在这里插入图片描述
HashSet 中的元素实际上是对象,一些常见的基本类型可以使用它的包装类。

基本类型对应的包装类表如下:
在这里插入图片描述
HashSet 类位于 java.util 包中,使用前需要引入它,语法格式如下:

import java.util.HashSet; // 引入 HashSet 类
  • 1

以下实例我们创建一个 HashSet 对象 sites,用于保存字符串元素:

HashSet<String> set = new HashSet<String>();
  • 1

添加元素
HashSet 类提供类很多有用的方法,添加元素可以使用 add() 方法:

// 引入 HashSet 类      
import java.util.HashSet;

public class RunoobTest {
    public static void main(String[] args) {
    HashSet<String> set = new HashSet<String>();
        set.add("hello");
        set.add("中国");
        set.add("ok");
        set.add("hello");// 重复的元素不会被添加
        set.add("加油!");  
        System.out.println(set);
    }
}

运行结果:
[hello, 中国, 加油!, ok]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

在上面的实例中,hello 被添加了两次,它在集合中也只会出现一次,因为集合中的每个元素都必须是唯一的。

判断元素是否存在
我们可以使用 contains() 方法来判断元素是否存在于集合当中:

// 引入 HashSet 类      
import java.util.HashSet;

public class RunoobTest {
    public static void main(String[] args) {
    HashSet<String> set = new HashSet<String>();
        set.add("hello");
        set.add("中国");
        set.add("ok");
        set.add("hello");// 重复的元素不会被添加
        set.add("加油!");  
        System.out.println(set.contains("ok"));
    }
}

运行结果:
true
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

删除元素
我们可以使用 remove() 方法来删除集合中的元素:

// 引入 HashSet 类      
import java.util.HashSet;

public class RunoobTest {
    public static void main(String[] args) {
    HashSet<String> set = new HashSet<String>();
        set.add("hello");
        set.add("中国");
        set.add("ok");
        set.add("hello");// 重复的元素不会被添加
        set.add("加油!");  
        set.remove("加油!")//删除成功返回true,否则返回false
        
运行结果:
[hello,ok,加油]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

计算大小
如果要计算 HashSet 中的元素数量可以使用 size() 方法:

// 引入 HashSet 类      
import java.util.HashSet;

public class RunoobTest {
    public static void main(String[] args) {
    HashSet<String> set = new HashSet<String>();
        set.add("hello");
        set.add("中国");
        set.add("ok");
        set.add("hello");// 重复的元素不会被添加
        set.add("加油!");  
        System.out.println(set.size());
    }
}
运行结果:
4
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

迭代 HashSet
可以使用 for-each 来迭代 HashSet 中的元素。
也可以用迭代器来遍历集合

public class RunoobTest {
    public static void main(String[] args) {
    Set<String> set = new HashSet<>();
        set.add("hello");
        set.add("中国");
        set.add("ok");
        set.add("hello");// 重复的元素不会被添加
        set.add("加油!");

        Iterator<String> it = set.iterator();//迭代器,遍历集合
        while(it.hasNext()) {
            System.out.println(it.next());
        }
            System.out.println("==============");

        for (String s:set) {
            System.out.println(s);
        }
    }
    
运行结果:

中国
hello
加油!
ok
==============
中国
hello
加油!
ok
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

注意:

  1. Set是继承自Collection的一个接口类
  2. Set中只存储了key,并且要求key一定要唯一
  3. Set的底层是使用Map来实现的,其使用key与Object的一个默认对象作为键值对插入到Map中的
  4. Set最大的功能就是对集合中的元素进行去重
  5. 实现Set接口的常用类有TreeSet和HashSet,还有一个LinkedHashSet,LinkedHashSet是在HashSet的基础
    上维护了一个双向链表来记录元素的插入次序。
  6. Set中的Key不能修改,如果要修改,先将原来的删除掉,然后再重新插入

在这里插入图片描述

更多 API 方法可以查看:HashSet方法

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/67242
推荐阅读
相关标签
  

闽ICP备14008679号