常用方法如下表所示:
| 方法名 | 方法说明 |
| — | — |
| 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
在以下代码中,往集合中存储元素的顺序为: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
在以下代码中,往集合中分别添加三个元素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
=======================================================================
仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 间编写程序代码,使用 HashSet 的常用方法完成所给要求,具体如下:
-
接收给定的一行字符串(如:hello,hi,ask);
-
根据英文逗号切割字符串,把切割后的元素添加进 HashSet;
-
判断集合中元素个数,当个数大于 4,且集合中没有元素 hello 时,往集合中添加元素 hello,如果集合中已有元素 hello,请输出提示语句:“集合中已有该元素”,当个数小于等于 4 时,请输出提示语句:“元素个数小于4”;
-
打印集合。
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。
例: 测试输入:
hello,hi,kiko,solo,so
预期输出:
集合中已有该元素[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 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");
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
**因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/82f1b25cf2c63221a8c338ed864642f4.jpeg)
![img](https://img-blog.csdnimg.cn/img_convert/0ddc0330210e458f8389a91543794c4e.png)
![img](https://img-blog.csdnimg.cn/img_convert/86969ae554dc66ffecc68a1499276dc8.png)
![img](https://img-blog.csdnimg.cn/img_convert/d907e5a8511477d5b5a914cc2a9c2534.png)
![img](https://img-blog.csdnimg.cn/img_convert/5a771befaa73b2259ebdddb5fe08d2fb.png)
![img](https://img-blog.csdnimg.cn/img_convert/74672f96ca3084e4eb20363c4d3555f1.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!**
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)**
![img](https://img-blog.csdnimg.cn/img_convert/2cbba8cadb40b7fb8ad272e17f216597.jpeg)
### 最后
**Java架构进阶面试及知识点文档笔记**
> **这份文档共498页,其中包括Java集合,并发编程,JVM,Dubbo,Redis,Spring全家桶,MySQL,Kafka等面试解析及知识点整理**
![image](https://img-blog.csdnimg.cn/img_convert/c5c5f09ad4f8d39ff9d2811ca7dfe6e2.webp?x-oss-process=image/format,png)
**Java分布式高级面试问题解析文档**
**其中都是包括分布式的面试问题解析,内容有**分布式消息队列,Redis缓存,分库分表,微服务架构,分布式高可用,读写分离等等!
![image](https://img-blog.csdnimg.cn/img_convert/cc99c5fbc21fc7f3b271a7c6d50585f0.webp?x-oss-process=image/format,png)
**互联网Java程序员面试必备问题解析及文档学习笔记**
![image](https://img-blog.csdnimg.cn/img_convert/49783388333a0bb74732e0f638f342b5.webp?x-oss-process=image/format,png)
**Java架构进阶视频解析合集**
**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
![img](https://img-blog.csdnimg.cn/img_convert/4aa8010c7a5f041a82f6de337c00ed5a.jpeg)
084305)]
**Java分布式高级面试问题解析文档**
**其中都是包括分布式的面试问题解析,内容有**分布式消息队列,Redis缓存,分库分表,微服务架构,分布式高可用,读写分离等等!
[外链图片转存中...(img-Zo7Qiy8x-1712903084306)]
**互联网Java程序员面试必备问题解析及文档学习笔记**
[外链图片转存中...(img-m4H5DDxn-1712903084306)]
**Java架构进阶视频解析合集**
**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
[外链图片转存中...(img-YfuCgmlb-1712903084306)]