返回顶部
首页 > 资讯 > 后端开发 > Python >Java如何使用Set接口存储没有重复元素的数组
  • 849
分享到

Java如何使用Set接口存储没有重复元素的数组

2024-04-02 19:04:59 849人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录Set接口HashSet集合Set接口         Set接口和List接口一样,继承Collection接口,Set接口中元素无序,

Set接口

        Set接口和List接口一样,继承Collection接口,Set接口中元素无序,并且都会以某种规则保证存入的元素不出现重复。

HashSet集合

       HashSet是Set接口的一个实现类,所存储的元素是不可重复的,并且元素都是无序的,当向HashSet集合中添加一个对象时,首先会调用该对象的hashCode()方法来计算对象的哈希值,从而确定元素的存储位置。如果此时哈希值相同,再调用对象的equals()方法来确保该位置没有重复元素。

 package 集合类;
 import java.util.HashSet;
 import java.util.Iterator;
 public class Set {
     public static void main(String[] args) {
         HashSet set=new HashSet();
         set.add("hello");
         set.add("world");
         set.add("abc");
         set.add("hello");
         Iterator it=set.iterator();
         while(it.hasNext()){
             Object obj=it.next();
             System.out.print(obj+ " ");
         }
     }
 }

运行结果

         由运行结果可以看出,取出元素的顺序和添加元素的顺序并不一致,并且重复的字符串被去掉了,只添加了一次,是因为HashSet集合的add()方法存入元素时,首先调用当前存入对象的hashCode()方法获得对象的哈希值,然后根据哈希值算出一个存储位置,如果这个位置上没有元素,则直接将该元素存入,如果该位置上有元素存在,则会调用equal()方法让当前存入的元素依次和该位置上的元素比较。如果返回结果为false就将该元素存入集合,返回结果为true,则说明有重复元素,将该元素舍弃。

 package 集合类;
 import java.util.HashSet;
 class Student{
     String id;
     String name;
     public Student(String id,String name){
         this.id=id;
         this.name=name;
     }
     public String toString(){
         String s = id + ":" + name;
         return s;
     }
 }
 public class Set1 {
     public static void main(String[] args) {
         HashSet hs=new HashSet();
         Student stu1=new Student("1","hello");
         Student stu2=new Student("2","world");
         Student stu3=new Student("1","hello");
         hs.add(stu1);
         hs.add(stu2);
         hs.add(stu3);
         System.out.println(hs);
     }
 }

运行结果

  

     所没有去掉重复的元素,是因为在定义Student类时没有重写hashCode()和equals()方法。

package api;
 import java.util.HashSet;
 class Student{
     private String id;
     private String name;
     public Student(String id,String name){
         this.id=id;
         this.name=name;
     }
     //重写toString方法
     public String toString(){
         return id+ ":"+name;
     }
     //重写hashCode方法
     public int hashCode(){
         //返回id属性的哈希值
         return id.hashCode();
     }
     public boolean equals(Object obj){
         //判断是否是同一个对象
         if(this==obj){
             return true;
         }
         //判断对象是Student类型
         if(!(obj instanceof Student)){
             return false;
         }
         //将对象强转为Student类型
         Student stu=(Student)  obj;
         //判断id是否相同
         boolean b=this.id.equals(stu.id);
         return b;
     }
 }
 public class Set2 {
     public static void main(String[] args) {
         HashSet hs=new HashSet();
         Student stu1=new Student("1","hello");
         Student stu2=new Student("2","world");
         Student stu3=new Student("1","hello");
         hs.add(stu1);
         hs.add(stu2);
         hs.add(stu3);
         System.out.println(hs);
     }
 }

运行结果

         由于Student类重写了Object类的hashCode()和equals()方法。在hashCode()方法中返回id属性的哈希值,在equals()方法中比较对象的id属性是否相等,并返回结果。当调用HashSet集合的add()方法添加stu3对象时,发现它的哈希值与stu2对象相同,而且stu2.equals(stu3)返回true。HashSet认定两个对象相同,因此重复的Student对象被去除了。

到此这篇关于Java如何使用Set接口存储没有重复元素的数组的文章就介绍到这了,更多相关Java Set接口内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java如何使用Set接口存储没有重复元素的数组

本文链接: https://lsjlt.com/news/147759.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java如何使用Set接口存储没有重复元素的数组
    目录Set接口HashSet集合Set接口         Set接口和List接口一样,继承Collection接口,Set接口中元素无序,...
    99+
    2024-04-02
  • Java怎么使用Set接口存储没有重复元素的数组
    本篇内容主要讲解“Java怎么使用Set接口存储没有重复元素的数组”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java怎么使用Set接口存储没有重复元素的数组”吧!Set接口  &n...
    99+
    2023-06-30
  • JAVA如何去除数组重复元素
    可以使用Set集合来去除数组中的重复元素。Set集合是不允许出现重复元素的集合,可以通过将数组转换为Set集合,然后再将Set集合转...
    99+
    2023-09-22
    JAVA
  • Java中如何使用Iterable接口遍历所有元素
    小编给大家分享一下Java中如何使用Iterable接口遍历所有元素,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Iterabl...
    99+
    2024-04-02
  • 使用php数组不重复元素的技巧有哪些
    本篇内容介绍了“使用php数组不重复元素的技巧有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、使用array_unique()函数数...
    99+
    2023-07-06
  • php如何判断数组中是否存在重复元素
    这篇文章主要讲解了“php如何判断数组中是否存在重复元素”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php如何判断数组中是否存在重复元素”吧!利用array_count_values()函...
    99+
    2023-07-05
  • 如何去重多维 PHP 数组中的重复元素?
    要去重多维 php 数组中的重复元素,可以使用 array_unique() 函数或者自定义递归函数。array_unique() 会将内部数组作为一个整体处理,而自定义递归函数会遍历数...
    99+
    2024-04-28
    php 多维数组 去重
  • 如何使用 foreach 循环去除 PHP 数组中的重复元素?
    使用 foreach 循环去除 php 数组中重复元素的方法如下:遍历数组,若元素已存在且当前位置不是第一个出现的位置,则删除它。举例而言,若数据库查询结果存在重复记录,可使用此方法去除...
    99+
    2024-04-27
    php 数组
  • javascript如何判断两个数组是否有重复的元素
    今天小编给大家分享一下javascript如何判断两个数组是否有重复的元素的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收...
    99+
    2024-04-02
  • php如何删除数组中重复的元素值
    这篇文章将为大家详细讲解有关php如何删除数组中重复的元素值,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php删除数组中重复值的方法:1、使用array_unique()函数,语法“array_uniq...
    99+
    2023-06-14
  • php如何查找数组中不重复的元素
    本篇内容主要讲解“php如何查找数组中不重复的元素”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何查找数组中不重复的元素”吧!方法:1、用array_count_values()统计元素...
    99+
    2023-06-30
  • php如何删除二维数组中重复的元素
    这篇文章主要介绍了php如何删除二维数组中重复的元素,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php删除二维数组中重复的元素的方法:首先创建一个PHP示例文件;然后通过“...
    99+
    2023-06-20
  • 如何在Python中使用Unix存储接口来优化数据存储?
    Python是一种灵活且功能强大的编程语言,因此成为了许多数据科学家和开发人员的首选语言。在Python中,我们可以使用各种不同的存储方法来存储和管理数据。其中,Unix存储接口是一种流行的存储方法,可以优化数据存储和访问。在本文中,我们将...
    99+
    2023-08-22
    存储 接口 unix
  • 如何在 Python 中使用 Apache 存储的接口?
    Apache 存储是一个开源的分布式存储系统,它可以存储海量的数据,提供高可靠性和高性能的数据存储服务。在 Python 中使用 Apache 存储的接口可以帮助我们更方便地操作存储系统,本文将介绍如何在 Python 中使用 Apach...
    99+
    2023-11-01
    接口 apache 存储
  • 如何使用display:inline-block居中没有宽度的元素
    这篇文章主要介绍“如何使用display:inline-block居中没有宽度的元素”,在日常操作中,相信很多人在如何使用display:inline-block居中没有宽度的元素问题上存在疑惑,小编查阅了...
    99+
    2024-04-02
  • 如何使用JS编写一个函数返回数组中重复出现过的元素
    这篇文章主要介绍了如何使用JS编写一个函数返回数组中重复出现过的元素,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。代码如下:var ...
    99+
    2024-04-02
  • 如何使用 Java 接口处理数组响应?
    在 Java 编程中,接口是一个非常重要的概念。它是一种定义了方法和常量的抽象类型,可以让开发者在不实现任何方法的情况下定义一些规范。接口在处理数组响应时也非常有用,因为它可以让我们定义一些通用的方法来处理不同类型的数组响应。本文将介绍如...
    99+
    2023-06-14
    接口 数组 响应
  • Java中如何使用接口来操作数组?
    在Java编程中,数组是一种非常重要的数据结构,它可以用来存储一组有序的数据,并且可以通过下标来访问数组中的元素。Java提供了很多种方法来操作数组,其中之一就是使用接口来操作数组。本文将介绍在Java中如何使用接口来操作数组。 一、什么...
    99+
    2023-08-09
    接口 spring 数组
  • java如何使用二分查找数组中指定元素
    这篇文章给大家分享的是有关java如何使用二分查找数组中指定元素的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。查找数组中指定元素(二分查找) 二分查找的必要条件是必须有序的数列  &...
    99+
    2023-06-27
  • 如何使用Java数组处理实时接口数据?
    在现代软件开发中,实时接口数据处理已经成为了一个非常重要的部分。而在Java开发中,数组是处理数据的重要工具之一。因此,在本文中,我们将讨论如何使用Java数组处理实时接口数据。 一、什么是实时接口数据? 实时接口数据是指从外部设备或系统...
    99+
    2023-06-06
    实时 接口 数组
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作