头歌实践-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 集合用于存储无序的、唯一的元素。
- 无序就是存储元素顺序和提取顺序不同,
- 唯一就是存储的元素不能有相同的,
它主要有 HashSet 和 TreeSet 两个实现类,本实训将介绍 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 **********/
}
}
开始你的任务吧,祝你成功!