找回密码
 会员注册
查看: 33|回复: 0

Java中的Set(如果想知道Java中有关Set的知识点,那么只看这一篇就足够了!)

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
64454
发表于 2024-9-3 18:07:44 | 显示全部楼层 |阅读模式
前言:在Java编程中,集合框架(CollectionsFramework)是处理数据结构和算法的基础工具之一。它提供了一套强大且灵活的接口和类,用于存储和操作不同类型的数据集合。在这其中,Set接口扮演着一个重要角色。与其他集合类型如List和Map不同,Set强调的是集合中元素的唯一性。这使得它在需要去重、快速查找等场景下显得尤为重要。✨✨✨这里是秋刀鱼不做梦的BLOG✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客先让我们看一下本文大致的讲解内容:目录1.Set概念的简介        (1)Set的定义    (2)Set类在Java集合类中的关系2.Set接口中常用的API    (1)booleanadd(Ee)    (2)voidclear()    (3)booleancontains(Objecto)    (4)Iteratoriterator()    (5)booleanremove(Objecto)    (6)intsize()    (7)booleanisEmpty()    (8)Object[]toArray()    (9)booleancontainsAll(Collectionc)    (10)booleanaddAll(Collectionc)3.Set的常见实现类    (1)HashSet    (2)LinkedHashSet    (3)TreeSet4.Set的实际案例        (1)去除重复元素    (2)查找集合的交集、并集和差集    (3)判断两个集合是否相等5.总结1.Set概念的简介        (1)Set的定义        在Java中,Set接口是Java集合框架的一部分,用于表示一组唯一的元素。与List不同,Set不允许包含重复的元素。这意味着即使尝试将相同的元素添加多次,Set中也只会保留一个实例。Set接口继承自Collection接口,因此它也拥有一些集合框架中通用的方法。        Set的主要特点:无序性:Set中的元素没有特定的顺序,这意味着你不能通过索引来访问Set中的元素。唯一性:Set中的每个元素都是唯一的,即不能包含重复的元素。允许null值:大多数Set实现都允许包含一个null值,但不能有多个null值。        我相信读者如果初次学习Java中的Set类的话,可能对上面对Java中Set类的解释不能够很好的理解,不过没有关系,读者继续向下阅读即可。    (2)Set类在Java集合类中的关系    了解了Set类的基本定义之后,现在再让我们看看Set类在Java的集合框架中的的关系,如下图:        从上图我们可以得知,Java中的Set类也实现了Collection接口,那么Set类也就实现了Collection接口中的方法,即可以使用其中的方法。        ——至此,通过上边的学习了解之后,这样我们就大致的了解了Java中的Set究竟是什么东西了。2.Set接口中常用的API    在Java中,Set是继承自Collection的接口类,但是相较于Java中的Map类,Set中只存储了Key,所以对于Set而言,其方法大都是操作其中的Key的,以下是Set接口的主要方法:方法解释booleanadd(Ee)添加元素,但重复元素不会被添加成功voidclear()清空集合booleancontains(Objecto)判断o是否在集合中Iteratoriterator()返回迭代器booleanremove(Objecto)删除集合中的ointsize()返回set中元素的个数booleanisEmpty()检测set是否为空,空返回true,否则返回falseObject[]toArray()将set中的元素转换为数组返回booleancontainsAll(Collectionc)集合c中的元素是否在set中全部存在,是返回true,否则返回falsebooleanaddAll(Collectionc)将集合c中的元素添加到set中,可以达到去重的效果这里我们对上述方法进行逐一使用代码进行实例解释:    (1)booleanadd(Ee)    ——向集合中添加指定的元素。如果集合中不存在该元素,则返回true;如果集合中已存在该元素,则返回false。importjava.util.HashSet;importjava.util.Set;publicclassAddExample{publicstaticvoidmain(String[]args){Setset=newHashSet();booleanadded1=set.add("Apple");booleanadded2=set.add("Banana");booleanadded3=set.add("Apple");//尝试添加重复元素System.out.println(set);}}输出:[Apple,Banana]    (2)voidclear()    ——移除集合中的所有元素,使集合变为空集。importjava.util.HashSet;importjava.util.Set;publicclassClearExample{publicstaticvoidmain(String[]args){Setset=newHashSet();set.add("Apple");set.add("Banana");set.add("Cherry");System.out.println("Setbeforeclear:"+set);set.clear();System.out.println("Setafterclear:"+set);}}输出:Setbeforeclear:[Apple,Banana,Cherry]Setafterclear:[]    (3)booleancontains(Objecto)    ——如果集合中包含指定的元素,则返回true;否则返回false。importjava.util.HashSet;importjava.util.Set;publicclassContainsExample{publicstaticvoidmain(String[]args){Setset=newHashSet();set.add("Apple");set.add("Banana");booleancontainsApple=set.contains("Apple");booleancontainsCherry=set.contains("Cherry");System.out.println("Setcontains'Apple':"+containsApple);System.out.println("Setcontains'Cherry':"+containsCherry);}}输出:Setcontains'Apple':trueSetcontains'Cherry':false    (4)Iteratoriterator()    ——返回在集合中的元素上进行迭代的迭代器。importjava.util.HashSet;importjava.util.Iterator;importjava.util.Set;publicclassIteratorExample{publicstaticvoidmain(String[]args){Setset=newHashSet();set.add("Apple");set.add("Banana");set.add("Cherry");Iteratoriterator=set.iterator();while(iterator.hasNext()){Stringelement=iterator.next();System.out.println(element);}}}输出:AppleBananaCherry    (5)booleanremove(Objecto)    ——从集合中移除指定的元素。如果集合中存在该元素,则返回true;否则返回false。publicclassRemoveExample{publicstaticvoidmain(String[]args){Setset=newHashSet();set.add("Apple");set.add("Banana");booleanremoved=set.remove("Banana");booleannotRemoved=set.remove("Cherry");System.out.println(set);System.out.println(removed);System.out.println(notRemoved);}}输出:[Apple]truefalse    (6)intsize()    ——返回集合中元素的数量。importjava.util.HashSet;importjava.util.Set;publicclassSizeExample{publicstaticvoidmain(String[]args){Setset=newHashSet();set.add("Apple");set.add("Banana");set.add("Cherry");intsize=set.size();System.out.println("Setsize:"+size);}}输出:Setsize:3    (7)booleanisEmpty()    ——如果集合不包含任何元素,则返回true;否则返回false。publicclassIsEmptyExample{publicstaticvoidmain(String[]args){Setset=newHashSet();booleanisEmptyBeforeAdd=set.isEmpty();set.add("Apple");booleanisEmptyAfterAdd=set.isEmpty();System.out.println(isEmptyBeforeAdd);System.out.println(isEmptyAfterAdd);}}输出:truefalse    (8)Object[]toArray()    ——返回包含集合中所有元素的数组。importjava.util.HashSet;importjava.util.Set;publicclassToArrayExample{publicstaticvoidmain(String[]args){Setset=newHashSet();set.add("Apple");set.add("Banana");set.add("Cherry");Object[]array=set.toArray();for(Objectelement:array){System.out.println((String)element);}}}输出:AppleBananaCherry    (9)booleancontainsAll(Collectionc)    ——如果集合包含指定集合中的所有元素,则返回true;否则返回false。publicclassContainsAllExample{publicstaticvoidmain(String[]args){Setset=newHashSet();set.add("Apple");set.add("Banana");set.add("Cherry");Listlist=Arrays.asList("Apple","Banana");booleancontainsAll=set.containsAll(list);System.out.println(containsAll);}}输出:true    (10)booleanaddAll(Collectionc)    ——将指定集合中的所有元素添加到集合中。如果集合因调用而发生改变,则返回true。importjava.util.HashSet;importjava.util.Arrays;importjava.util.List;importjava.util.Set;publicclassAddAllExample{publicstaticvoidmain(String[]args){Setset=newHashSet();set.add("Apple");Listlist=Arrays.asList("Banana","Cherry","Apple");booleanisChanged=set.addAll(list);System.out.println("SetafteraddAll:"+set);System.out.println("Wasthesetchanged?"+isChanged);}}输出:SetafteraddAll:[Apple,Banana,Cherry]Wasthesetchanged?true        这样我们就了解了Java中Set中常用的API了!3.Set的常见实现类        Java中有几个常见的Set实现类,每个类都有其独特的特性和适用场景。以下是最常见的三种实现:    (1)HashSet    ——HashSet是最常用的Set实现类之一。它基于哈希表实现,具有快速的插入、删除和查找操作。由于HashSet不维护元素的顺序,所以其遍历顺序可能与插入顺序不同。以下为其使用代码:importjava.util.HashSet;importjava.util.Set;publicclassHashSetExample{publicstaticvoidmain(String[]args){SethashSet=newHashSet();hashSet.add(1);hashSet.add(2);hashSet.add(3);System.out.println("HashSet:"+hashSet);}}    (2)LinkedHashSet    ——LinkedHashSet是HashSet的子类,它维护着一个双向链表,以保证元素的插入顺序。因此,遍历LinkedHashSet时,元素将按照其插入顺序返回。以下为其使用代码:importjava.util.LinkedHashSet;importjava.util.Set;publicclassLinkedHashSetExample{publicstaticvoidmain(String[]args){SetlinkedHashSet=newLinkedHashSet();linkedHashSet.add("One");linkedHashSet.add("Two");linkedHashSet.add("Three");System.out.println("LinkedHashSet:"+linkedHashSet);}}    (3)TreeSet    ——TreeSet实现了SortedSet接口,并基于红黑树实现。它保证元素按自然顺序或指定的比较器顺序排序。以下为其使用代码:importjava.util.Set;importjava.util.TreeSet;publicclassTreeSetExample{publicstaticvoidmain(String[]args){SettreeSet=newTreeSet();treeSet.add("Banana");treeSet.add("Apple");treeSet.add("Cherry");System.out.println("TreeSet:"+treeSet);}}        以上就是三种Java中常见的Set类的实现类了!4.Set的实际案例    在日常的生活工作中,Java中的Set的用武之地还是有很多的,以下是一些实际使用Set的案例,展示了其在解决具体问题时的应用:        (1)去除重复元素        在数据处理中,通常需要去除重复的元素。Set的唯一性特性使其非常适合这个任务。importjava.util.Arrays;importjava.util.HashSet;importjava.util.List;importjava.util.Set;publicclassRemoveDuplicates{publicstaticvoidmain(String[]args){Listlist=Arrays.asList("apple","banana","apple","orange","banana");Setset=newHashSet(list);System.out.println("Uniqueelements:"+set);}}    (2)查找集合的交集、并集和差集    我们还可以使用Set可以方便地进行集合操作,如交集、并集和差集。importjava.util.HashSet;importjava.util.Set;publicclassSetOperations{publicstaticvoidmain(String[]args){Setset1=newHashSet();set1.add("A");set1.add("B");set1.add("C");Setset2=newHashSet();set2.add("B");set2.add("C");set2.add("D");//并集Setunion=newHashSet(set1);union.addAll(set2);System.out.println("Union:"+union);//交集Setintersection=newHashSet(set1);intersection.retainAll(set2);System.out.println("Intersection:"+intersection);//差集Setdifference=newHashSet(set1);difference.removeAll(set2);System.out.println("Difference:"+difference);}}    (3)判断两个集合是否相等    我们可以使用Set的equals方法来判断两个集合是否相等。两个集合相等的条件是它们包含的元素相同,顺序无关。importjava.util.HashSet;importjava.util.Set;publicclassSetEquality{publicstaticvoidmain(String[]args){Setset1=newHashSet();set1.add(1);set1.add(2);set1.add(3);Setset2=newHashSet();set2.add(3);set2.add(2);set2.add(1);System.out.println("Aresetsequal?"+set1.equals(set2));}}        当然,Java中的Set还有其他的许多用处,这里作者只是简单的列举出几点,其他的作用读者可以在日常中对其进行探索。这样我们就使用Set的实际案例来帮助你进一步理解Java中的Set类。5.总结        在本文中,我们首先全面探讨了Java中的Set接口及其使用方法。Set是Java集合框架的重要组成部分,旨在存储唯一的元素。其主要特点包括元素的唯一性和无序性,使其在需要去重或处理集合操作时非常有用。    接着我们详细介绍了Set接口中的常用API,如add、clear、contains、iterator、remove、size、isEmpty、toArray、containsAll和addAll,并通过代码示例演示了这些方法的实际应用。            之后我们还讨论了HashSet、LinkedHashSet和TreeSet这几种常见的Set实现类,分析了它们的特点和适用场景。        最后通过实际案例,我们展示了如何利用Set解决实际编程问题,如去除重复元素、进行集合操作和判断集合相等。通过对Set的深入理解和实际应用,我们能够在开发中更高效地处理集合数据,提升代码的性能和可维护性。以上就是本篇文章的全部内容了~~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-28 06:40 , Processed in 1.015753 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表