单列集合--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.mzph.cn/web/22902.shtml

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

相关文章

开放式耳机哪个牌子好?2024年度热门机型推荐榜单分享!

随着音乐技术的不断革新&#xff0c;开放式耳机已成为音乐发烧友们的首选。从最初的简单音质&#xff0c;到如今的高清解析&#xff0c;开放式耳机不断进化。音质纯净&#xff0c;佩戴舒适&#xff0c;无论是街头漫步还是家中细细静听&#xff0c;都能带给你身临其境的音乐体验…

iOS18 新变化提前了解,除了AI还有这些变化

iOS 18即将在不久的将来与广大iPhone用户见面&#xff0c;这次更新被普遍认为是苹果历史上最重要的软件更新之一。据多方报道和泄露的消息&#xff0c;iOS 18将带来一系列全新的功能和改进&#xff0c;包括在人工智能领域的重大突破、全新的设计元素以及增强的性能和安全性。现…

make 中 DESTDIR 和 --prefix 的区别

1.configure + make./configure --prefix=/usr make -j8make install DESTDIR=/home2.meson + ninja meson build --prefix=/usr DESTDIR=/home ninja install 这两个示例分别展示了如何使用两种流行的构建系统(configure + make 和 meson + ninja)来编译和安装软件,并…

AI教我变得厉害的思维模式01 - 成长型思维模式

今天和AI一起思考如何培养自己的成长性思维。 一一核对&#xff0c;自己哪里里做到&#xff0c;哪里没有做到&#xff0c;让AI来微调训练我自己。 成长性思维的介绍 成长性思维&#xff08;Growth Mindset&#xff09;是由斯坦福大学心理学教授卡罗尔德韦克&#xff08;Carol…

钡铼技术BL103助力实现PLC到OPC-UA无缝转换新高度

在工业4.0的大背景下&#xff0c;信息物理系统和工业物联网的融合日益加深&#xff0c;推动了工业自动化向更高层次的发展。OPC UA作为一种开放、安全、跨平台的通信协议&#xff0c;在实现不同设备、系统间数据交换和互操作性方面扮演了核心角色。钡铼技术公司推出的BL103 PLC…

调用讯飞星火API实现图像生成

目录 1. 作者介绍2. 关于理论方面的知识介绍3. 关于实验过程的介绍&#xff0c;完整实验代码&#xff0c;测试结果3.1 API获取3.2 代码解析与运行结果3.2.1 完整代码3.2.2 运行结果 3.3 界面的编写&#xff08;进阶&#xff09; 4. 问题分析5. 参考链接 1. 作者介绍 刘来顺&am…

Vitis HLS 学习笔记--通道的FIFO/PIPO选择

目录 1. 简介 2. 代码详解 2.1 FIFO 通道示例 2.1.1 配置默认通道 2.1.2 kernel 代码 2.1.3 综合报告 2.1.4 depth 32 解析 2.1.5 FIFO 通道分类 2.2 PIPO 2.2.1 配置默认通道 2.2.2 kernel 代码 2.2.3 综合报告 2.2.4 PIPO 通道分类 3. 综合对比 3.1 数据类…

docker安装及常见命令

历史版本docker下载 https://docs.docker.com/desktop/release-notes/#upgrades-17 docker start 容器id # 启动容器 docker restart 容器id # 重启容器 docker stop 容器id # 停止当前运行的容器 docker kill 容器id # 强制停止当前容器…

2024年带你揭秘FL Studio 21破解版,2024年最新FL21内置汉化破解补丁

截止目前&#xff0c;FL Studio最新版是FL Studio 21.2.3.4004版本&#xff0c;想必很多朋友已经迫不及待了&#xff0c;那么今天这篇文章我将带大家详细的介绍FL Studio 21.2.3 Build 4004新特点以及如何下载&#xff0c;安装和激活。 PS.本次为你带来的是fl studio21破解版&a…

针对多标签(Multi-label)任务的经典算法

前言 如果你对这篇文章感兴趣&#xff0c;可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」&#xff0c;查看完整博客分类与对应链接。 多标签&#xff08;Multi-label&#xff09;任务是分类任务的扩展版&#xff0c;即每个样本不再仅属于一个类别&#xff0…

MySQL是怎么保证原子性的(undo log日志相关)

MySQL是怎么保证原子性的&#xff1f; 事务的原子性就是&#xff1a;一个事物要么全部执行成功&#xff0c;要么全部执行失败。MySQL 主要是利用 undo log&#xff0c;也就是回滚日志来实现原子性。 平常我们在对数据进行增删改时&#xff0c;InnoDB 除了会记录 redo log&…

【python】Modulenotfounderror: no module named ‘open_clip’

成功解决“ModuleNotFoundError: No module named ‘open_clip’”错误的全面指南 在Python编程中&#xff0c;如果你遇到了“ModuleNotFoundError: No module named ‘open_clip’”这个错误&#xff0c;它意味着你的Python环境中没有安装名为open_clip的模块&#xff0c;或者…

grep、sed、awk

grep&#xff1a;文本过滤工具 sed: 文本编辑工具 awk: 格式化文本 grep -n 显示行号 -i 忽略大小写 -v 取反 -o 只保留关键消息 # 找出文件的空行 grep ^$ test.txt -n # 找出文件非空行内容 grep ^$ test.txt -n -v # 找出文件非空行内容&#xff0c;并且排除注释&#xff…

8个免费下载音乐的网站,建议收藏!

1、My Free MP3 tools.liumingye.cn/music/ 一个好用且免费的在线音乐播放和下载网站&#xff0c;几乎收录了所有国内外大火的歌手和歌曲&#xff0c;可以通过歌手列表找单曲&#xff0c;也可以直接搜索歌手或歌曲名&#xff0c;下面还有一些热门搜索&#xff0c;可以直接播放…

频率域,空间域以及频率域和空间域如何获取

文章目录 频率域频率域的关键概念&#xff1a;频率域的应用&#xff1a; 空间域空间域特征的含义&#xff1a;空间域操作的常见技术&#xff1a;与频率域的对比&#xff1a; 如何获取空间域&#xff0c;频率域空间域特征&#xff1a;频率域特征&#xff1a; 频率域 频率域&…

每天学习一个Windows命令或Linux命令——seq

今天我们来学习 seq命令&#xff01; seq命令&#xff08;单词sequence序列的缩写&#xff09;是Linux系统中用于输出序列化的一串整数的命令。 一、seq用法 seq用法一共有以下三种&#xff1a; seq [选项]... 尾数 seq [选项]... 首数 尾数 seq [选项]... 首数 增量&#…

数字证书-证书分类

SSL证书类型 数字证书DV证书、OV证书和EV证书三种类型的SSL证书。不同类型证书的安全性、支持的证书品牌和适用的网站类型不同&#xff0c;具体如下表所示 证书类型适用网站类型等级认证强度支持的证书品牌DV&#xff08;域名型&#xff09;个人网站一般CA机构审核个人网站真…

Windows下SVN文件损坏,启动服务报错1067

之前碰到过一次&#xff0c;忘记最后怎么解决的了&#xff0c;只记得大概原理和原因&#xff0c;以及解决办法。 1067错误码&#xff0c;很多地方都会碰到&#xff0c;mysql也会有&#xff0c;看来应该是windows系统的错误码。跟具体程序无关。所以直接百度“SVN”、“1067”…

HarmonyOS App开发造轮子--自定义圆形图片

思路&#xff1a; 1、对比之前自己在其他程序开发中自定义组件的思路&#xff0c;首先寻找父组件Image和Component相关的Api&#xff0c;看看是否具备OnDraw方法。 2、了解Canvas相关Api操作&#xff0c;特别是涉及到位图的操作。 通过翻阅大量资料&#xff0c;发现了两个关…

不是,有了这套IP地址管理开源系统谁还用Excel啊

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 中午好&#xff0c;我的网工朋友。 作为网工的我们想必都很清楚IP地址管理的重要性以及其复杂性&#xff0c;传统的Excel表格虽然在某些情况下能…