学习-Java集合类之Set的HashSet之常用方法的使用

第1关:学习-Java集合类之Set的HashSet之常用方法的使用

任务描述

本关任务:判断 HashSet 集合中元素个数以及是否包含某元素。

相关知识
Set集合

Set 集合用于存储无序的、唯一的元素。无序就是存储元素顺序和提取顺序不同,唯一就是存储的元素不能有相同的,它主要有 HashSet 和 TreeSet 两个实现类,本实训将介绍 HashSet 集合。

什么是 HashSet 集合

HashSet 是 Set 集合的实现类,它的底层数据结构是 HashMap 哈希表结构,它确保元素唯一是通过复写 hashCode() 方法和 equals() 方法,另外,它还是无序的。

创建 HashSet 集合

使用以下代码即可创建 HashSet 集合:

 
  1. public static void main(String[] args) {
  2. // 创建存储字符串的HashSet集合
  3. Set<String> objects = new HashSet<>();
  4. }
HashSet 常用方法

常用方法如下表所示:

方法名方法说明
add()往集合中添加元素
contains()判断集合中是否存在某元素
remove()从集合中删除指定的元素
clear()清除集合中所有元素
size()获取集合中元素个数
isEmpty()判断集合元素是否为空
Iterator()返回元素的迭代器

常用方法使用示例:

 
  1. public static void main(String[] args) {
  2. // 创建存储字符串的HashSet集合
  3. Set<String> objects = new HashSet<>();
  4. // 往集合中添加元素
  5. objects.add("123");
  6. objects.add("456");
  7. objects.add("789");
  8. // 判断集合是否为空
  9. boolean empty = objects.isEmpty();
  10. System.out.println(empty);
  11. // 判断集合是否包含元素123
  12. boolean contains = objects.contains("123");
  13. System.out.println(contains);
  14. // 移除集合元素123
  15. objects.remove("123");
  16. System.out.println(objects);
  17. // 获取迭代器,遍历集合所有元素
  18. Iterator<String> iterator = objects.iterator();
  19. while(iterator.hasNext()){
  20. System.out.println(iterator.next());
  21. }
  22. }

执行结果:

 
  1. false
  2. true
  3. [456, 789]
  4. 456
  5. 789
HashSet 的无序性

在以下代码中,往集合中存储元素的顺序为:123-aa-a,输出顺序却是aa-a-123,这就是 HashSet 的无序性。

 
  1. public static void main(String[] args) {
  2. // 创建存储字符串的HashSet集合
  3. Set<String> objects = new HashSet<>();
  4. // 往集合中添加元素
  5. objects.add("123");
  6. objects.add("aa");
  7. objects.add("a");
  8. // 获取迭代器,遍历集合所有元素
  9. Iterator<String> iterator = objects.iterator();
  10. while(iterator.hasNext()){
  11. System.out.println(iterator.next());
  12. }
  13. }

执行结果:

 
  1. aa
  2. a
  3. 123
HashSet 的唯一性

在以下代码中,往集合中分别添加三个元素ss、ss、how,但是最终添加进集合中的只有元素 ss 和 how(),这就是 HashSet 的唯一性,即存储的元素不能有相同的。

 
  1. public static void main(String[] args) {
  2. // 创建存储字符串的HashSet集合
  3. Set<String> objects = new HashSet<>();
  4. // 往集合中添加元素
  5. objects.add("ss");
  6. objects.add("ss");
  7. objects.add("how");
  8. // 获取迭代器,遍历集合所有元素
  9. Iterator<String> iterator = objects.iterator();
  10. while(iterator.hasNext()){
  11. System.out.println(iterator.next());
  12. }
  13. }

执行结果:

 
  1. ss
  2. how
编程要求

仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 间编写程序代码,使用 HashSet 的常用方法完成所给要求,具体如下:

  • 接收给定的一行字符串(如:hello,hi,ask);
  • 根据英文逗号切割字符串,把切割后的元素添加进 HashSet;
  • 判断集合中元素个数,当个数大于 4,且集合中没有元素 hello 时,往集合中添加元素 hello,如果集合中已有元素 hello,请输出提示语句:“集合中已有该元素”,当个数小于等于 4 时,请输出提示语句:“元素个数小于4”;
  • 打印集合。
测试说明

平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。

例: 测试输入:

 
  1. hello,hi,kiko,solo,so

预期输出:

 
  1. 集合中已有该元素
  2. [kiko, hi, solo, hello, so]

开始你的任务吧,祝你成功!

源代码:


import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class CollTest {

    public static void main(String[] args) {
        // 请在Begin-End间编写代码
        /********** Begin **********/
        // 第一步:接收给定的字符串
        Scanner sc=new Scanner(System.in);
	    String line = sc.nextLine();
        // 第二步:切割字符串
        String []split=line.split("\\,");
        // 第三步:创建集合
        Set<String> hs = new HashSet<String>();
        // 第四步:将切割后的元素添加进集合
        for(String string:split){ 
			    hs.add(string);
		}
        // 第五步:判断集合中元素个数是否大于4
        if(hs.size()>4&&hs.contains("hello"))
			    System.out.println("集合中已有该元素");
        // 第六步:当元素个数大于4,且元素中含有hello时,输出指定提示语
        if(hs.size()>=4&&!(hs.contains("hello")))
			    hs.add("hello");
        // 第七步:当元素个数大于4,且元素中不含hello时,把hello添加进集合
         if(hs.size()<=4)
        // 第八步:当元素个数小于4,输出指定提示语
        System.out.println("元素个数小于4");
        // 第九步:输出集合
        System.out.print(hs);
        /********** End **********/
    }
}

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值