首页 > 其他分享 >HashSet实现类的使用

HashSet实现类的使用

时间:2022-11-01 11:33:27浏览次数:48  
标签:name HashSet 实现 hs age add 使用 public

【1】放入Integer类型数据

package com.msb.test06;

import java.util.HashSet;

/**
 * @author : liu
 * 日期:10:36:57
 * 描述:IntelliJ IDEA
 * 版本:1.0
 */
public class TestInteger {
    //这是一个main方法:是程序的入口
    public static void main(String[] args) {
        //创建一个HashSet集合
        HashSet<Integer> hs = new HashSet<>();
        System.out.println(hs.add(19));//true
        hs.add(5);
        hs.add(20);
        System.out.pringln(hs.add(19));//false没有被写入集合
        hs.add(41);
        hs.add(0);
        System.out.println(hs.size());//唯一  无序
        System.out.println(hs);
    }
}

【2】放入String类型数据

package com.msb.test06;

import java.util.HashSet;

/**
 * @author : liu
 * 日期:10:41:10
 * 描述:IntelliJ IDEA
 * 版本:1.0
 */
public class TestString {
    //这是一个main方法:是程序的入口
    public static void main(String[] args) {
        HashSet<String> hs=new HashSet<>();
        hs.add("hello");
        hs.add("apple");
        hs.add("banana");
        hs.add("html");
        hs.add("apple");
        hs.add("css");
        System.out.println(hs.size());
        System.out.println(hs);
    }
}

【3】放入自定义引用数据类型的数据

package com.msb.test06;

import java.util.HashSet;

/**
 * @author : liu
 * 日期:10:48:02
 * 描述:IntelliJ IDEA
 * 版本:1.0
 */
public class TestStudent {
    //这是一个main方法:是程序的入口
    public static void main(String[] args) {
        //创建一个HashSet集合
        HashSet<Student> hs=new HashSet<>();
        hs.add(new Student(19,"lili"));
        hs.add(new Student(20,"lulu"));
        hs.add(new Student(18,"feifei"));
        hs.add(new Student(19,"lili"));
        hs.add(new Student(10,"nana"));
        System.out.println(hs.size());
        System.out.println(hs);
    }
}

上面自定义的类型不满足唯一、无序类型数据的特点。为什么呢?

【4】HashSet原理图:(简要原理图)

 

 

 

package com.msb.test06;

import java.util.Objects;

/**
 * @author : liu
 * 日期:10:47:02
 * 描述:IntelliJ IDEA
 * 版本:1.0
 */
public class Student {
    private int age;
    private String name;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Student{" +
                "age=" + age +
                ", name='" + name + '\'' +
                '}';
    }

    public Student(int age, String name) {
        this.age = age;
        this.name = name;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age && Objects.equals(name, student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(age, name);
    }
}

 

标签:name,HashSet,实现,hs,age,add,使用,public
From: https://www.cnblogs.com/jeldp/p/16847108.html

相关文章

  • 用Unity实现Dota2角色Shader(以Ogre Magi为例)
    写在前面:本文章为个人学习笔记,方便以后自己复习,也希望能帮助到他人。由于本人水平有限难免出现错误,还请评论区指出,多多指教。部分图元和素材来源于网络,如有侵权请联系本......
  • 升讯威在线客服系统客服端英文界面的技术实现方法,客户落地巴西圣保罗
    我在业余时间开发维护了一款免费开源的升讯威在线客服系统,也收获了许多用户。对我来说,只要能获得用户的认可,就是我最大的动力。最近收到来自巴西客户的需求,希望为客服端......
  • linux下 ubantu 使用笔记本电脑摄像头,v4l2采集摄像头数据
    1虚拟机添加usb控制器,注意选择兼容3.1  2添加移动设备 3在ubantu中输入命令行cheese检测摄像头是否工作正常4gcc编译如下代码,注意根据摄像头支持的格式......
  • 解决Ubuntu 20.04下VS code无法使用中文输入法的问题
    技术背景在Ubuntu20.04下,如果从应用商城中直接下载VScode,有可能会导致无法使用中文输入法的问题,那么就只能从其他地方写了中文再复制过来,非常的麻烦。从一些文章中收集......
  • 纹理的其他使用
    写在前面:本文章为个人学习笔记,方便以后自己复习,也希望能帮助到他人。由于本人水平有限难免出现错误,还请评论区指出,多多指教。部分图元和素材来源于网络,如有侵权请联系本......
  • PhantomJS入门使用
    概述​​官网​​​,​​GitHub​​​,​​下载地址​​​简介:一个基于webkit的JSAPI。它使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行JS代码。任何你可以......
  • Java实现HTML页面截图功能
    概述业务开发中,经常会有HTML页面截图,或打印另存为PDF文件的需求。本文即是HTML页面截图需求的技术调研过程的成文。不想看长篇大论的同学,可以直接看Selenium部分,本人最后也......
  • 【转】Android之Spinner下拉列表 使用详解
    原文网址:(56条消息)Android之Spinner使用详解_浪漫主义码农的博客-CSDN博客_androidspinnerSpinner(列表选择框)的基本使用当我们的app需要用户输入数据时,除了让用户自......
  • Java的基本使用
    两个部分:一是理论、二是实践;这里的Java讲解来源于2010年之前,之后的改变看官网。一、Java的基本概念1Java发展历史由sun(Stanforduniversitynetwork)开发,1982年2月成立,2009年......
  • 设计模式-模板模式在Java中的使用示例
    场景模板模式模板模式又叫模板方法模式(TemplateMethodPattern),是指定义一个算法的骨架,并允许子类为一个或者多个步骤提供实现。模板模式使得子类可以在不改变算法......