当前位置: 首页 > news >正文

Set接口

Set接口的介绍

Set接口基本介绍

  • 无序(添加和取出的顺序不一致),没有索引
  • 不允许重复元素,所以最多包含一个null
  • JDK API中Set接口的实现类:主要有HashSet;TreeSet
    在这里插入图片描述

Set接口的常用方法

和List 接口一样,Set接口也是Collection的子接口,因此,常用方法和Collection接口一样

Set接口的遍历方式

同Collection一致,因为Set是Collection的子接口

  • 迭代器
  • 增强for
  • 不能使用索引的方式

Set接口的常用方法举例

public class SetMethod {@SuppressWarnings({"all"})public static void main(String[] args) {//1. 以 Set 接口的实现类 HashSet 来讲解 Set 接口的方法//2. set 接口的实现类的对象(Set 接口对象), 不能存放重复的元素, 可以添加一个 null//3. set 接口对象存放数据是无序(即添加的顺序和取出的顺序不一致)//4. 注意:取出的顺序的顺序虽然不是添加的顺序,但是他是固定的.HashSet set = new HashSet();set.add("john");set.add("lucy");set.add("john");//重复set.add("jack");set.add("hsp");set.add("mary");set.add(null);//set.add(null);//再次添加 null
//        for (int i = 0; i < 10; i++) {
//            System.out.println(set);
//        }//遍历//1,使用迭代器System.out.println("======使用迭代器=====");Iterator iterator = set.iterator();while (iterator.hasNext()) {Object object = iterator.next();System.out.println(object);}//2,使用增强for循环System.out.println("======使用增强for循环=====");for (Object o:set){System.out.println(o);}//3,不能用普通for ,因为set对象不能调用get方法。不能通过索引来获取}}

结果
在这里插入图片描述

Set接口实现类-HashSet

HashSet 的全面说明

  • HashSet 实现了Set接口
  • HashSet实际上是HashMap,源码
    在这里插入图片描述
  • 可以存放null值,但是只能有一个null
  • HashSet不保证元素是有序的,取决于hash后,再确定索引的结果(即:不保证存放元素的顺序和取出的顺序一致)
  • 不能有重复元素/对象
public class HashSet_ {@SuppressWarnings({"all"})public static void main(String[] args) {HashSet hashSet = new HashSet();hashSet.add(null);hashSet.add(null);System.out.println("hashSet="+hashSet);}
}

结果
在这里插入图片描述

案例说明

public class HashSet01 {@SuppressWarnings({"all"})public static void main(String[] args) {HashSet set = new HashSet();/*** 说明:* 1,在执行add方法后,会返回一个boolean值* 2,如果添加成功,返回true,否则返回false*/System.out.println(set.add("john"));//TSystem.out.println(set.add("lucy"));//TSystem.out.println(set.add("john"));//FSystem.out.println(set.add("jack"));//TSystem.out.println(set.add("Rose"));//T//3,调用remove方法,直接删除对象set.remove("john");System.out.println("set="+set);//Rose, lucy, jackset = new HashSet();System.out.println(set);//空//4,Hashset 不能添加相同的元素/数据set.add("lucy");//添加成功Tset.add("lucy");//加入不了Fset.add(new Dog("tom"));set.add(new Dog("tom"));//不同的对象System.out.println(set);}
}
class Dog{private String name;public Dog(String name) {this.name = name;}@Overridepublic String toString() {return "Dog{" +"name='" + name + '\'' +'}';}
}

结果
在这里插入图片描述

Set接口实现类-LinkedHashSet

LinkedHashSet的全面说明

  • LinkedHashSet 是HashSet的子类
  • LinkedHashSet底层是一个LinkedHashMap,底层维护了一个数组+双向链表
  • LinkedHashSet根据元素的hashCode值来决定元素的存储位置,同时使用链表维护元素的次序,这使得元素看起来是一插入顺序保存的
  • LinkedHashSet不允许添加重复元素
http://www.lryc.cn/news/345609.html

相关文章:

  • vue2结合element-ui实现TreeSelect 树选择功能
  • Python运维之定时任务模块APScheduler
  • Linux技能
  • 算法有哪些分类
  • 面试经典150题——找出字符串中第一个匹配项的下标
  • .Net MAUI 搭建Android 开发环境
  • 编译适配纯鸿蒙系统的ijkplayer中的ffmpeg库
  • 离线维护麒麟操作系统
  • leetcode尊享面试——二叉树(python)
  • macbookpro 安装linux mint 无线wifi无法连接 解决方案
  • 抖音小店如此内卷,现在还值得投入吗?还能赚到钱吗?
  • Java基础知识(11)
  • iOS——SDWebImage源码学习
  • 信创基础软件之中间件
  • 在Ubuntu linux操作系统上操作MySQL数据库常用的命令
  • 前端科举八股文-JAVASCRIPT篇
  • Docker私有仓库与Harbor部署使用
  • Linux的iptables防火墙基础介绍
  • deepspeed+transformers模型微调
  • 无人机摄影测量数据处理、三维建模及在土方量计算中的应用
  • 《ESP8266通信指南》15-MQTT连接、订阅MQTT主题并打印消息(基于Lua|适合新手|非常简单)
  • LeetCode:两数之和
  • CSDN我的创作纪念日128天||不忘初心|努力上进|勇往直前
  • MySQL数据库中的浮点类型和高精度类型有什么区别?为什么不推荐使用浮点类型?
  • C++ 抽象与封装
  • antV X6的简要使用教程
  • 【LLM 论文】Step-Back Prompting:先解决更高层次的问题来提高 LLM 推理能力
  • Java——接口的补充
  • word转pdf的java实现(documents4j)
  • 基于K8S构建Jenkins持续集成平台