单列集合--ArryList、LinkedList、Set

在这里插入图片描述


使用IDEA进入某个类之后,按ctrl+F12,或者alt+数字7,可查看该实现类的大纲。


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

package exercise;import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.function.Consumer;public class Demo3 {public static void main(String[] args) {Set<String> s = new HashSet<>();//添加元素//如果当前元素是第一次添加,那么可以添加成功,返回true//如果当前元素是第二次添加,那么添加失败,返回falseboolean s1 = s.add("sundhine");boolean s2 = s.add("sundhine");System.out.println(s1 + " " + s2);s.add("jiuselu");s.add("lulushui");//存、取顺序不一致System.out.println(s);System.out.println("----------------------------");//迭代器遍历Iterator<String> it = s.iterator();while (it.hasNext()) {String next = it.next();System.out.println(next);}System.out.println("----------------------------");//增强for遍历for (String string : s) {System.out.println(string);}System.out.println("----------------------------");//Lambdas.forEach(string -> System.out.println(string));}
}

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

package exercise;import java.util.Objects;public class Demo4 {public static void main(String[] args) {//1.创建对象Student s1 = new Student("sunshien", 23);Student s2 = new Student("sunshien", 23);//2.如果没有重写hashCode方法,不同对象计算出的哈希值是不同的//如果已经重写hashCode方法,不同的对象只要属性值相同,计算出的哈希值就是一样的System.out.println(s1.hashCode());System.out.println(s2.hashCode());//在小部分情况下,不同的属性或者不同的地址值计算出来的哈希值也有可能一样}
}class Student {private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}/*** 获取** @return name*/public String getName() {return name;}/*** 设置** @param name*/public void setName(String name) {this.name = name;}/*** 获取** @return age*/public int getAge() {return age;}/*** 设置** @param age*/public void setAge(int age) {this.age = age;}@Overridepublic 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);}@Overridepublic int hashCode() {return Objects.hash(name, age);}public String toString() {return "Student{name = " + name + ", age = " + age + "}";}
}

在这里插入图片描述


1.加载因子是hashSet的扩容时机,当数组中存了 16*0.75 = 12后(本题为例),原数组就会扩充为原先的两倍。

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

package exercise;import java.util.HashSet;
import java.util.Objects;public class Demo5 {public static void main(String[] args) {Student s1 = new Student("sunshine", 23);Student s2 = new Student("sunshine", 23);Student s3 = new Student("jiuselu", 24);Student s4 = new Student("lulushui", 23);HashSet<Student> h = new HashSet<>();h.add(s1);h.add(s2);h.add(s3);h.add(s4);for (Student student : h) {System.out.println(student);}}
}class Student {private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}/*** 获取** @return name*/public String getName() {return name;}/*** 设置** @param name*/public void setName(String name) {this.name = name;}/*** 获取** @return age*/public int getAge() {return age;}/*** 设置** @param age*/public void setAge(int age) {this.age = age;}@Overridepublic 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);}@Overridepublic int hashCode() {return Objects.hash(name, age);}public String toString() {return "Student{name = " + name + ", age = " + age + "}";}
}

在这里插入图片描述
ctrl+shift+上\下箭头可实现某行代码上下移动。

package exercise;import java.util.LinkedHashSet;public class Demo6 {public static void main(String[] args) {Student s1 = new Student("sunshine", 23);Student s2 = new Student("sunshine", 23);Student s3 = new Student("jiuselu", 24);Student s4 = new Student("lulushui", 23);LinkedHashSet<Student> l = new LinkedHashSet<>();l.add(s1);l.add(s2);l.add(s3);l.add(s4);for (Student student : l) {System.out.println(student);}}
}

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

package exercise;import java.util.TreeSet;public class Demo7 {public static void main(String[] args) {TreeSet<Integer> t = new TreeSet<>();t.add(1);t.add(8);t.add(7);t.add(4);//默认从小到大排序System.out.println(t);}
}

在这里插入图片描述


在这里插入图片描述

package exercise;import java.util.Objects;
import java.util.TreeSet;public class Demo7 {public static void main(String[] args) {TreeSet<Student> t = new TreeSet<>();Student s1 = new Student("sunshine", 23);Student s3 = new Student("jiuselu", 24);Student s4 = new Student("lulushui", 25);t.add(s1);t.add(s3);t.add(s4);for (Student student : t) {System.out.println(student);}//hashcode和equals方法:哈希表有关的,所以student不用重写。//Treeset:底层是黑树}
}
//泛型要写明类型
class Student implements Comparable<Student> {private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}/*** 获取** @return name*/public String getName() {return name;}/*** 设置** @param name*/public void setName(String name) {this.name = name;}/*** 获取** @return age*/public int getAge() {return age;}/*** 设置** @param age*/public void setAge(int age) {this.age = age;}public String toString() {return "Student{name = " + name + ", age = " + age + "}";}@Overridepublic int compareTo(Student o) {//指定排序的规则//只看年龄,按照年龄升序排列return this.getAge() - o.getAge();/*this:表示当前要添加的元素o:表示已经在红黑树存在的元素返回值:负数:认为要添加的元素是小的,存左边正数:认为要添加的元素是大的,存右边认为要添加的元素已经存在,舍弃*/}
}

上述练习实现了第一种排序方式
在这里插入图片描述


在这里插入图片描述

package exercise;import java.util.Comparator;
import java.util.TreeSet;public class Demo8 {public static void main(String[] args) {TreeSet<String> ts = new TreeSet<>(new Comparator<String>() {@Override//o1:表示当前要添加的元素//o2:表示已经在红黑树存在的元素//返回值规则跟之前是一样的public int compare(String o1, String o2) {//按长度排序int i = o1.length() - o2.length();i = i == 0 ? o1.compareTo(o2) : i;return i;}});ts.add("c");ts.add("ab");ts.add("df");ts.add("qwer");System.out.println(ts);}
}

在这里插入图片描述

package exercise;import java.util.TreeSet;public class Demo9 {public static void main(String[] args) {Student s1 = new Student("sunshine", 23, 23, 34, 45);Student s2 = new Student("jiuselu", 24, 23, 34, 45);Student s3 = new Student("lulushui", 25, 23, 34, 45);Student s4 = new Student("sunshine1", 23, 23, 34, 45);Student s5 = new Student("sunshine2", 23, 23, 34, 45);TreeSet<Student> ts = new TreeSet<>();ts.add(s1);ts.add(s2);ts.add(s3);ts.add(s4);ts.add(s5);for (Student t : ts) {System.out.println(t);}}
}class Student implements Comparable<Student> {private String name;private int age;private int chinese;private int math;private int english;public Student() {}public Student(String name, int age, int chinese, int math, int english) {this.name = name;this.age = age;this.chinese = chinese;this.math = math;this.english = english;}/*** 获取** @return name*/public String getName() {return name;}/*** 设置** @param name*/public void setName(String name) {this.name = name;}/*** 获取** @return age*/public int getAge() {return age;}/*** 设置** @param age*/public void setAge(int age) {this.age = age;}/*** 获取** @return chinese*/public int getChinese() {return chinese;}/*** 设置** @param chinese*/public void setChinese(int chinese) {this.chinese = chinese;}/*** 获取** @return math*/public int getMath() {return math;}/*** 设置** @param math*/public void setMath(int math) {this.math = math;}/*** 获取** @return english*/public int getEnglish() {return english;}/*** 设置** @param english*/public void setEnglish(int english) {this.english = english;}public String toString() {return "Student{name = " + name + ", age = " + age + ", chinese = " + chinese + ", math = " + math + ", english = " + english + "sum =" + this.getChinese() + this.getEnglish() + this.getMath()+"}";}//方式一:@Overridepublic int compareTo(Student o) {int sum1 = this.getChinese() + this.getEnglish() + this.getMath();System.out.println(sum1);int sum2 = o.getChinese() + o.getEnglish() + o.getMath();int i = sum1 - sum2;i = i == 0 ? this.chinese - o.chinese : i;i = i == 0 ? this.math - o.math : i;i = i == 0 ? this.english - o.english : i;i = i == 0 ? this.getAge() - o.getAge() : i;i = i == 0 ? this.getName().compareTo(o.getName()) : i;return i;}
}

在这里插入图片描述


在这里插入图片描述


Java中toString()方法的作用:它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不是String类型的话,就自动调用xx的toString()方法。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/341534.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ShowDoc item_id 未授权SQL注入漏洞复现

0x01 产品简介 ShowDoc 是一个开源的在线文档协作平台,它支持Markdown、图片等多种格式,方便团队成员共同编辑和分享文档。企业常见使用场景是使用其进行接口文档、内部知识库管理。 0x02 漏洞概述 2024年6月,ShowDoc官方发布新版本修复了一个SQL注入漏洞。鉴于该漏洞无前…

基于三元组一致性学习的单目内窥镜里程计估计

文章目录 TCL: Triplet Consistent Learning for Odometry Estimation of Monocular Endoscope摘要方法实验结果 TCL: Triplet Consistent Learning for Odometry Estimation of Monocular Endoscope 摘要 单目图像中深度和姿态的估计对于计算机辅助导航至关重要。由于很难获…

6. MySQL 查询、去重、别名

文章目录 【 1. 数据表查询 SELECT 】1.1 查询表中所有字段使用 * 查询表的所有字段列出表的所有字段 1.2 查询表中指定的字段 【 2. 去重 DISTINCT 】【 3. 设置别名 AS 】3.1 为表指定别名3.2 为字段指定别名 【 5. 限制查询结果的条数 LIMIT 】5.1 指定初始位置5.2 不指定初…

映射网络驱动器自动断开的解决方法

如果将驱动器映射到网络共享&#xff0c;映射的驱动器可能会在定期处于非活动状态后断开连接&#xff0c;并且 Windows 资源管理器可能会在映射驱动器的图标上显示红色 X。&#xff0c;出现此行为的原因是&#xff0c;系统可以在指定的超时期限后断开空闲连接&#xff0c; (默认…

【Kubernetes】k8s的调度约束(亲和与反亲和)

一、调度约束 list-watch 组件 Kubernetes 是通过 List-Watch 的机制进行每个组件的协作&#xff0c;保持数据同步的&#xff0c;每个组件之间的设计实现了解耦。 用户是通过 kubectl 根据配置文件&#xff0c;向 APIServer 发送命令&#xff0c;在 Node 节点上面建立 Pod 和…

0基础学习Elasticsearch-使用Java操作ES

文章目录 1 背景2 前言3 Java如何操作ES3.1 引入依赖3.2 依赖介绍3.3 隐藏依赖3.4 初始化客户端&#xff08;获取ES连接&#xff09;3.5 发送请求给ES 1 背景 上篇学习了0基础学习Elasticsearch-Quick start&#xff0c;随后本篇研究如何使用Java操作ES 2 前言 建议通篇阅读再回…

c语言项目-贪吃蛇项目2-游戏的设计与分析

文章目录 前言游戏的设计与分析地图&#xff1a;这里简述一下c语言的国际化特性相关的知识<locale.h> 本地化头文件类项setlocale函数 上面我们讲到需要打印★&#xff0c;●&#xff0c;□三个宽字符找到这三个字符打印的方式有两种&#xff1a; 控制台屏幕的长宽特性&a…

语法分析-编译原理期末复习

自上而下的语法分析 自上而下语法分析法:或从开始符号出发,找最左推导;或从根开始,构造推导树。 自下而上语法分析法:从输入串开始,归约,直至文法开始符。 回溯分析法 产生回溯的原因:公共左因子(开始匹配上了,可能走错分枝)、左递归(不知道递归多少次)、空产生式。 …

【Git】分支管理 -- 详解

一、理解分支 分支就是科幻电影里面的平行宇宙&#xff0c;当你正在电脑前努力学习 C 的时候&#xff0c;另一个你正在另一个平行宇宙里努力学习 JAVA。 如果两个平行宇宙互不干扰&#xff0c;那对现在的你也没啥影响。不过&#xff0c;在某个时间点&#xff0c;两个平行宇宙…

解决 clickhouse jdbc 偶现 failed to respond 问题

背景 Clickhouse集群版本为 Github Clickhouse 22.3.5.5&#xff0c; clickhouse-jdbc 版本为 0.2.4。 问题表现 随着业务需求的扩展&#xff0c;基于Clickhouse 需要支持更多任务在期望的时效内完成&#xff0c;于是将业务系统和Clickhouse交互的部分都提交给可动态调整核心…

InfiniGate自研网关实现思路七

25.网关Nginx负载模型配置 通过模拟多个HTTP服务配置到 Nginx 做负载均衡&#xff0c;以学习API网关负载的配置和使用 API 网关是用于支撑分布式 RPC 接口协议转换提供 HTTP 调用的一套服务&#xff0c;那么 API 网关系统就需要可横向扩展来满足系统的吞吐量诉求。所以这里需…

HTML如何让文字底部线条不紧贴在文字下面(既在内容下方又超出内容区域)

hello&#xff0c;大家好&#xff0c;星途星途今天给大家带来的内容是如何让文字底部线条不紧贴在文字下面。 话不多说&#xff0c;先上效果图 简单来说就是padding和margin的区别。 在网页设计中&#xff0c;有时我们想要给某个元素添加一个装饰性的线条&#xff0c;比如底部…

Python实现定时任务的方式

大家好&#xff0c;在当今数字化的时代&#xff0c;定时任务的需求在各种应用场景中频繁出现。无论是数据的定时更新、周期性的任务执行&#xff0c;还是特定时间点的操作触发&#xff0c;Python 都为我们提供了强大而灵活的手段来实现这些定时任务。当我们深入探索 Python 的世…

美国年轻人热衷床上“摆烂”,沃尔玛发掘床上用品新商机!

美国年轻人近年来热衷于床上“摆烂”生活方式&#xff0c;这反映了他们对舒适放松的追求和现代生活的压力。沃尔玛作为零售业巨头&#xff0c;敏锐地捕捉到这一市场变化&#xff0c;发现了床上用品的新商机。 美国年轻人忙碌中渴望宁静空间。床成为他们放松、逃离现实压力的理想…

计算机网络学习笔记——运输层(b站)

目录 一、 运输层概述 二、运输层端口号、复用与分用的概念 三、UDP和TCP的对比 四、TCP的流量控制 五、TCP的拥塞控制 六、TCP超时重传时间的选择 七、TCP可靠传输的实现 八、TCP报文段的首部格式 一、 运输层概述 物理层、数据链路层、网络层实现了主机到主机的通信…

【MySQL】表的基本操作

&#x1f30e;表的基本操作 文章目录&#xff1a; 表的基本操作 创建查看表       创建表       查看表结构 表的修改       表的重命名       表的添加与修改       删除表结构 总结 前言&#xff1a; 在数据库中&#xff0c;数据表是存储和组…

项目-双人五子棋对战:匹配模块的实现(3)

完整代码见: 邹锦辉个人所有代码: 测试仓库 - Gitee.com 模块详细讲解 功能需求 匹配就类似于大家平常玩的王者荣耀这样的匹配功能, 当玩家点击匹配之后, 就会进入到一个匹配队列, 当匹配到足够数量的玩家后, 就会进入确认页. 在这里, 我们主要实现的是1 - 1匹配功能, 首先先…

前端应用开发实验:组件应用

目录 实验目的相关知识点实验内容及要求代码实现效果 实验目的 &#xff08;1&#xff09;掌握组件的创建方法&#xff08;全局组件、局部组件&#xff09;&#xff1b; &#xff08;2&#xff09;重点学会组件之间的数据传递&#xff08;prop传值、自定义事件&#xff09;&am…

一文了解JVM面试篇(上)

Java内存区域 1、如何解释 Java 堆空间及 GC? 当通过 Java 命令启动 Java 进程的时候,会为它分配内存。内存的一部分用于创建 堆空间,当程序中创建对象的时候,就从对空间中分配内存。GC 是 JVM 内部的一 个进程,回收无效对象的内存用于将来的分配。 2、JVM 的主要组成…