工作学习笔记(八)去重校验

news/2024/11/14 0:04:56/文章来源:https://www.cnblogs.com/zjw111/p/18545099

在Java中,“去重校验”通常用于确保数据集合(如数组、列表等)中的元素是唯一的。以下是几种常见的方式:

  1. 使用简单对象去重
  • 原理:HashSet是基于哈希表实现的集合,它不允许存储重复的元素。当向HashSet中添加元素时,它会根据元素的哈希码(hashCode)来确定元素在内部存储结构中的位置,并且通过equals方法来判断是否为重复元素。
  • 例如:

import java.util.HashSet; import java.util.Set; public class DuplicateCheckWithHashSet { public static void main(String[] args) { // 创建一个包含重复元素的整数数组 Integer[] numbers = {1, 2, 3, 2, 4, 3}; Set<Integer> numberSet = new HashSet<>(); for (Integer number : numbers) { numberSet.add(number); } System.out.println(numberSet); } }
 
在上述示例中,我们有一个整数数组 numbers ,其中包含了重复的元素。通过将数组中的元素逐个添加到 HashSet 中,最终 HashSet 中只会保留不重复的元素。当我们打印 numberSet 时,就可以得到去重后的元素集合。

  1. 使用TreeSet(用于排序和去重)
  • 原理:TreeSet是基于红黑树实现的有序集合,它也不允许存储重复的元素。在添加元素时,会按照元素的自然顺序(如果元素实现了Comparable接口)或者通过自定义的比较器(Comparator)进行排序,并同时进行去重操作。
  • 示例代码:

import java.util.TreeSet; import java.util.Set; public class DuplicateCheckWithTreeSet { public static void main(String[] args) { // 创建一个包含重复元素的字符串数组 String[] words = {"apple", "banana", "cherry", "banana", "date"}; Set<String> wordSet = new TreeSet<>(); for (String word : words) { wordSet.add(word); } System.out.println(wordSet); } }

这里有一个字符串数组 words ,将其中的元素添加到 TreeSet 中。 TreeSet 会对元素进行排序(按照字典序),并且去除重复的元素。最后打印出的 wordSet 是排好序且无重复元素的集合。

  1. 保持插入顺序并去重
  • 原理:LinkedHashSet继承自HashSet,它在HashSet的基础上,通过维护一个双向链表来记录元素的插入顺序。在去重方面和HashSet一样,通过元素的哈希码和equals方法来判断重复。
  • 示例:

import java.util.LinkedHashSet; import java.util.Set; public class DuplicateCheckWithLinkedHashSet { public static void main(String[] args) { // 创建一个包含重复元素的字符数组 Character[] characters = {'a', 'b', 'c', 'b', 'd', 'a'}; Set<Character> characterSet = new LinkedHashSet<>(); for (Character character : characters) { characterSet.add(character); } System.out.println(characterSet); } }

在这个示例中, LinkedHashSet 去除了字符数组 characters 中的重复元素,并且输出的集合元素顺序和插入顺序一致。

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

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

相关文章

python第八章课后习题

8.4 求微分方程组的数值解 x=-x3-y,x(0)=1,y=x-y3,y(0)=0.5,0<=t<=30,要求画出x(t)和y(t)的解曲线图形,再相平面上画出轨线点击查看代码 import matplotlib.pyplot as plt from scipy.integrate import solve_ivpdef system(t, state):x, y = statedxdt = -x**3 - …

手动安装ROS2

手动安装ROS2本文以ROS2-jazzy作为示例版本,默认已经安装好ubuntu24.04设置区域 确保你的语言环境支持UTF-8。只要系统是UTF-8语言环境,基本没有问题,可以不设置。 sudo apt update && sudo apt install locales sudo locale-gen en_US en_US.UTF-8 sudo update-loc…

第七章

7.1 在区间[0,10]上等间距取1000个点Xi(i为下标,i=1,2,3,...,1000),并计算在这些点Xi处函数g(x)=((3x2+4x+6)sinx)/(x2+8x+6)的函数值yi(i为下标),利用观测点(Xi,Yi)(i=1,2,3,...,1000),求三次样条插值函数h(x),并求积分g(x)从0到10和h(x)从0到10。点击查看代码 impor…

识海社区打卡-4

今天打卡大模拟 Problem - 1365D - Codeforces大模拟确实恶心人,但作为最臭的屎平时还是得多吃点,大模拟的特点是思路不算很难但代码真的很长很长,一个不小心哪里写得有问题查错就是半天,各种细节都要很注意,对于提升自己查错能力和快速写题能力还是很有帮助的,这种屎虽然…

《Django 5 By Example》阅读笔记:p54-p75

《Django 5 By Example》学习第3天,p54-p75总结,总计22页。 一、技术总结 1.分页 (1)分页:Paginator (2)页数不存在处理: EmptyPage, PageNotAnInteger 2.class-based views(类视图) (1)为什么使用类视图? 1)Organize code related to HTTP methods, such as GET, POST, o…

11.18

实验17:解释器模式(选作) 本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解解释器模式的动机,掌握该模式的结构; 2、能够利用解释器模式解决实际问题。[实验任务一]:解释器模式 某机器人控制程序包含一些简单的英文指令,其文法规则如下: expression…

项目冲刺11.13

这个作业属于哪个课程 计科22级34班这个作业要求在哪里 作业要求这个作业的目标 进行为期七天的项目冲刺并记录前言 本篇博客是项目冲刺的第五篇,七篇博客的汇总如下:博客汇总第一篇博客第二篇博客第三篇博客第四篇博客第五篇博客第六篇博客第七篇博客团队简介队名 拖延是你不…

Z-Library电子图书馆官方地址入口 国内最新可用镜像网址入口 客户端(持续更新)

Z-Library:自由获取知识的电子图书馆Z-Library(简称Z-Lib)。曾用名BookFinder。是一个提供广泛学术资源的影子图书馆网站。用户可以在此下载期刊、文章以及各类书籍。 其藏书量超过1000万本书籍和8000万篇文章。尽管因版权问题。Z-Library在2022年11月3日遭到封S。但它通过新…

智能驱动下的客户运营与知识管理整合策略

在数字化转型的浪潮中,智能技术的应用正深刻改变着企业的运营模式和客户服务方式。智能驱动下的客户运营与知识管理整合策略,旨在通过智能化手段,优化客户体验,提升运营效率,同时实现知识的有效管理和利用。本文将深入探讨这一策略的核心价值、实施路径及实践案例,为企业…

黑神话吉吉国王版搞笑版总共4关(附下载链接)

话不多说,上图吉吉国王版黑神话点击下载

在Clion中快速生成函数中形参注释及添加函数说明

快速生成函数中形参注释 只需要在函数前输入/**,然后按回车,这样即可快速生成如下函数形参注释。 新增函数描述 在设置界面中的搜索框中输入Code Generation,然后勾选 如下选择框,这样就可以在如上生成的代码快中新增函数描述栏 说明:有些版本可能找不到,按如下位置查找…

痞子衡嵌入式:在i.MXRT启动头FDCB里配置串行NOR Flash多个寄存器的注意事项

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是在FDCB里配置串行NOR Flash多个寄存器的注意事项。关于使用 i.MXRT 启动头 FDCB 来设置 Flash 内部寄存器,痞子衡写过如下两篇文章,在进入本文之前,建议大家先阅读下这两篇文章,有个初步了解。《在FDCB里…