头歌实践-Java集合类Set的HashSet之常用方法

  • 1.任务描述
  • 2.相关知识
  • 3.Set集合
  • 3.1 什么是 HashSet 集合
  • 3.2 创建 HashSet 集合
  • 3.3 HashSet 常用方法
  • 3.4HashSet 的无序性
  • 3.5HashSet 的唯一性
  • 4. 编程要求
  • 4.1测试说明
  • 4.2参考代码


1.任务描述

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

2.相关知识

3.Set集合

Set 集合用于存储无序的、唯一的元素

  • 无序就是存储元素顺序和提取顺序不同,
  • 唯一就是存储的元素不能有相同的,

它主要有 HashSetTreeSet 两个实现类,本实训将介绍 HashSet 集合。

3.1 什么是 HashSet 集合

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

3.2 创建 HashSet 集合

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

public static void main(String[] args) {        
  // 创建存储字符串的HashSet集合        
  Set<String> objects = new HashSet<>();    
  }

3.3 HashSet 常用方法

常用方法如下表所示:

方法名

方法说明

add()

往集合中添加元素

contains()

判断集合中是否存在某元素

remove()

从集合中删除指定的元素

clear()

清除集合中所有元素

size()

获取集合中元素个数

isEmpty()

判断集合元素是否为空

Iterator()

返回元素的迭代器

常用方法使用示例:

public static void main(String[] args) {        
  // 创建存储字符串的HashSet集合        
  Set<String> objects = new HashSet<>();        
  // 往集合中添加元素        
  objects.add("123");       
  objects.add("456");       
  objects.add("789");        
  // 判断集合是否为空        
  boolean empty = objects.isEmpty();        
  System.out.println(empty);        
  // 判断集合是否包含元素123        
  boolean contains = objects.contains("123");        
  System.out.println(contains);        
      // 移除集合元素123        
      objects.remove("123");        
      System.out.println(objects);        
      // 获取迭代器,遍历集合所有元素       
      Iterator<String> iterator = objects.iterator();        
      while(iterator.hasNext()){            
          System.out.println(iterator.next());       
      }    
  }

执行结果:

false
true
[456, 789]
456789

3.4HashSet 的无序性

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

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

执行结果:

aa
a
123

3.5HashSet 的唯一性

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

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

执行结果:

ss
how

4. 编程要求

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

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

4.1测试说明

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

例: 测试输入:

hello,hi,kiko,solo,so

预期输出:

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

4.2参考代码

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 scanner =new Scanner(System.in);
        // 第一步:接收给定的字符串
        String strings=scanner.nextLine();
        // 第二步:切割字符串
        String []str=strings.split(",");
        // 第三步:创建集合
        Set<String> hashSet=new HashSet<String>();
        // 第四步:将切割后的元素添加进集合
        for(String s:str){
            hashSet.add(s);
        }
        // 第五步:判断集合中元素个数是否大于4
        if(hashSet.size()>4){
            if(hashSet.contains("hello")){
                System.out.println("集合中已有该元素");
            }else{
                hashSet.add("hello");
            }
        }else{
            System.out.println("元素个数小于4");
        }
        // 第六步:当元素个数大于4,且元素中含有hello时,输出指定提示语

        // 第七步:当元素个数大于4,且元素中不含hello时,把hello添加进集合
        
        // 第八步:当元素个数小于4,输出指定提示语
     
        // 第九步:输出集合
        System.out.println(hashSet);
        /********** End **********/
    }
}

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