java零基础入门-Set接口

136 阅读5分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第29天,点击查看活动详情

哈喽,各位小伙伴们好,我是喵手。

       今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流学习,互相学习,才能成长的更快,对吧。

       我是一名java开发,所以日常接触到最多的就是java啦,所以我趁自己有空,就来好好回忆,把自己学到的会的,进行输出,不图什么有回报,只想能帮助到更多的小伙伴,就好。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对喵手我创作道路上最好的鼓励与支持!

一、前言

       论前几期啊,我们是分别讲了Object类Date类FormDate类Calendar类System类StringBuilder类,不知道大家掌握的如何,如果没有及时巩固的同学,可以看我这里,我给大家罗列了下,快速学习通道,只希望能帮助到大家更好的学习与成长,这就是我写作的初衷。

       在前几期,我们是有讲过Collection类的,不知道大家还是否有印象,我们都知道,Collection分为两类,一类是单列集合,一类是双列集合。

       其中Collection集合常用子类有:List集合(java.util.List)与Set集合(java.util.Set)。 今天,我们就来讲讲Collection类的单列集合之Set类吧。

二、Set接口

       说起set接口,其实它跟java.lang.List 接口是一样的,都是继承自Collection,它与Collection接口中的方法一样,并不像List接口一样有自身充扩充,用的都是Collection接口原生方法,但唯一一点不同就是比Collection接口更严格。

       与List集合特点相反,List是元素可重复且有序,Set是元素不可重复且无序。

       而且说起Set集合,它也跟List一样,拥有多个子类,比如:java.util.HashSet 、 java.util.LinkedHashSet等,所以,接下来,我会一一给大家讲讲它的这两子级。

注意:Set集合遍历可使用:增强for循环、Iterator迭代器。

三、HashSet集合

1、概念

      说起HashSet(b)集合,它是 Set 接口的一个实现类,特点与Set一样,元素不可重复且无序(存取顺序不相同)。HashSet之所以命名带有Hash,我猜命名由来是这样的,因为其本身HashSet的底层就由HashMap支持,所以就也带有哈西。由于我们还没讲到HashMap,这里我就不做过多解释了哈。

       HashSet是根据对象的哈西值来确定其元素在集合中的存储位置,因此它具有了良好的存取和查询性能。

       接下来,我带着大家先来使用一遍Set吧,边学边实践才是最好的教学方式(自认为)

2、实例演示

@Test
public void test() {

    //创建HashSet集合
    Set<String> hashSet = new HashSet<>();

    //存放几个元素
    hashSet.add("张良");
    hashSet.add("高渐离");
    hashSet.add("沈梦溪");
    hashSet.add("沈梦溪");

    //遍历 增强for
    for (String value : hashSet) {
        System.out.print(value + " ");
    }
}

或者你也可以使用Iterator迭代器进行遍历输出

代码如下:

@Test
public void test() {

    //创建HashSet集合
    Set<String> hashSet = new HashSet<>();

    //存放几个元素
    hashSet.add("张良");
    hashSet.add("高渐离");
    hashSet.add("沈梦溪");
    hashSet.add("沈梦溪");
    //遍历 Iterator迭代器
    Iterator<String> iterator = hashSet.iterator();
    while (iterator.hasNext()) {
        System.out.print(iterator.next() + " ");
    }
}

两者遍历输出结果都是一样的:

高渐离 张良 沈梦溪

       从执行结果,大家可以看到,沈梦溪其实被add了两次,对吧,但是执行结果值只打印了一次,这就是验证了Set集合元素不可重复的特点,说明Set集合是不能存放重复元素的。

四、LinkedHashSet集合

       我们都知道HashSet集合保证了其存放元素唯一,但存入的元素是不分顺序的,那如果想要保证存入顺序怎么办?其实啊,在HashSet下面有一个子类LinkedHashSet(java.util.LinkedHashSet),它的底层数据结构是一个链表和哈希表。它两结合,其实就保障了其存入顺序。

       若没有理解的,不碍事,我们可以来结合实例测试一下,就知道存入和取出顺序是不是一致的了。

演示代码如下:

@Test
public void test1() {

    //创建LinedHashSet集合
    Set<String> linkedHashSet = new LinkedHashSet<String>();

    //存放几个元素
    linkedHashSet.add("张良");
    linkedHashSet.add("高渐离");
    linkedHashSet.add("沈梦溪");
    linkedHashSet.add("沈梦溪");

    //遍历方式1 增强for
    for (String value : linkedHashSet) {
        System.out.print(value + " ");
    }
}

实际运行结果截图:

       同样,Iterator迭代器遍历也支持,我这里就不给大家演示了,其实你们可以看到除了元素不可重复外,它的存入​和取出顺序完全一致,有么有?看控制台打印输出,如果不相信的,可以自己多去手动试试,好吧!

       好啦,剩下的其他方法就你们自己去试试啦,我就不给大家一一演示咯,​授人以鱼不如授人以渔,哈哈哈,​基本概念及常用法我都教给你们了,剩下的就靠你们自己领悟啦。加油!​​

​​​​... ...

       好啦,以上就是本期内容的全部教学内容啦,如果对文中的任何知识点有疑问,欢迎评论区评论留言呀,我看见都会一一解答的。

五、结尾

       教学是结束了,但是有些话不知我但讲不当讲,啊哈哈, 可我还是想说给你们听听。如下是我很喜欢的一句话,我打算送给你们,希望我们都能变得更好更优秀。

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!

-------------------------------------------

⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

-------------------------------------------