• java HashSet的使用


    今天在写代码时想要使用HashSet,由于之前并不了解,就在网上查了一下原理及使用方法。

    HashSet原理

      该类实现了Set接口,HashSet中不允许元素重复,不保证集合中元素的顺序,元素可为null,但最多只能一个。对于 HashSet 而言,HashSet继承自AbstractSet,它是基于 HashMap 实现的,HashSet 底层使用HashMap来保存所有元素。因此HashSet的实现比较简单,相关 HashSet 的操作,基本上都是直接调用底层 HashMap 的相关方法来完成。

    常用方法

      构造方法:

        默认构造器:

    public HashSet() {
        map = new HashMap<>();
    }

        将传入的集合添加到HashSet的构造器

    public HashSet(Collection< ? extends E> c) {
        map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16));
        addAll(c);
    }

        明确初始容量和装载因子的构造器

    public HashSet(int initialCapacity, float loadFactor) {
        map = new HashMap<>(initialCapacity, loadFactor)
    }

        仅明确初始容量的构造器(装载因子默认0.75

    public HashSet(int initialCapacity) {
        map = new HashMap<>(initialCapacity);
    }

        API中几个常用方法:

        size() :返回值为int,返回此 set 中的元素的数量(set 的容量)。

        isEmpty():返回值为boolean, 如果此 set 不包含任何元素,则返回 true。

        add(E e):返回值为boolean,如果此 set 中尚未包含指定元素,则添加指定元素。

        iterator():返回值为Iterator<E>, 返回对此 set 中元素进行迭代的迭代器。

        remove(Object o):返回值为boolean,如果指定元素存在于此 set 中,则将其移除。

        contains(Object o):返回值为boolean,如果此 set 包含指定元素,则返回 true。

        clear():无返回值, 从此 set 中移除所有元素。

        clone():返回值为Object,返回此HashSet的浅表副本,而并没有复制元素本身。

    HashSet的简单使用

    创建:

    package com.cmq.common;
    
    import java.util.ArrayList;
    import java.util.HashSet;
    import java.util.List;
    import java.util.Set;
    
    import com.cmq.entity.Shoes;
    import com.cmq.entity.Manager;
    
    /**
    *@author chenmeiqi
    *@version 2020年2月10日 下午3:33:08
    *@公共属性类
    */
    public class Constants {
    
        //使用List模拟数据库,创建管理员List对象
        //public static List<Manager> mgrlist = new ArrayList<>();
        
        public static Set<Shoes> hashsetShoes= new HashSet<>();
    
    }

    添加

    if (idyz(Integer.parseInt(s[0]))) {
                if (Util.isEmpty(s[1])) {
                    if (s[6].equals("1") || s[6].equals("2") || s[6].equals("3") || s[6].equals("4")) {
                        shoe.setId(Integer.parseInt(s[0]));
                        shoe.setName(s[1]);
                        shoe.setSign(Integer.parseInt(s[6]));
                        shoe.setImage(s[2]);
                        shoe.setPrice(Double.parseDouble(s[3]));
                        shoe.setPub_address(s[4]);
                        shoe.setPub_date(Util.StringToDate(s[5]));
                        // 保存set集合中
                        Constants.hashsetShoes.add(book);
                    } else {
                        System.out.println("*******类别输入有误!****");
                    }
                } else {
                    System.out.println("*******名称不能为空!*****");
                }
            }

    删除:

    for(Shoesshoes:Constants.hashsetShoes) {
                if(shoes.getId() == id_input) {//从hashsetShoes中查询出id为传入的id的用户
                    Constants.hashsetBook.remove(shoes);//删除该商品
                    break;
                }
                
            }
  • 相关阅读:
    C与汇编
    Windows Internals
    Dig to Spice
    Raft
    Linux进入docker镜像内部、查看镜像内文件
    SpringBoot 整合Spring Security + JWT 实现前后端分离项目的认证授权
    前端使用MQTT.js(Websocket)连接MQTT(EMQ)
    Python 之基础 "if else ; while ; 三元运算"
    Python3.6 连接MySQL操作
    Python 基础之 "运算符"
  • 原文地址:https://www.cnblogs.com/qilin20/p/12300384.html
Copyright © 2020-2023  润新知