松阳县建设局网站/168推广网

松阳县建设局网站,168推广网,qq上网站做我女朋友,广州市广告公司标识系统设计DAY7.2 Java核心基础 想学习Collection、list、ArrayList、Set、HashSet部分的小伙伴可以转到 7.1集合框架、Collection、list、ArrayList、Set、HashSet和LinkedHashSet、判断两个对象是否相等文章查看 set集合 在set集合中,处理LinkedHashSet是有序的&#xf…

DAY7.2 Java核心基础

想学习Collection、list、ArrayList、Set、HashSet部分的小伙伴可以转到
7.1集合框架、Collection、list、ArrayList、Set、HashSet和LinkedHashSet、判断两个对象是否相等文章查看
在这里插入图片描述

set集合

在set集合中,处理LinkedHashSet是有序的,TreeSet的存放也是有序的,但是二者之间的有序亦有区

LinkedHashSet:元素的存储顺序和遍历顺序是一致的

TreeSet:内部元素会按照升序的方法进行排序,无论存入元素的顺序是什么,都会按照升序进行输出

public static void main(String[] args) {TreeSet<Integer> treeSet = new TreeSet<>();treeSet.add(1);treeSet.add(5);treeSet.add(3);treeSet.add(2);treeSet.add(1);treeSet.add(9);Iterator<Integer> iterator = treeSet.iterator();while (iterator.hasNext()){System.out.println(iterator.next());}System.out.println("***********************");LinkedHashSet<Integer> linkedHashSet = new LinkedHashSet<>();linkedHashSet.add(98);linkedHashSet.add(2);linkedHashSet.add(3);linkedHashSet.add(2);linkedHashSet.add(11);linkedHashSet.add(1);for (Integer integer : linkedHashSet) {System.out.println(integer);}
}

image-20250308171510286

可以看见treeSet自动排序了,而linkedHashSet按照添加顺序输出的,但是他们两个都去除了重复元素,验证了Set集合元素的唯一性

TreeSet 内部会自动按照升序对元素进行排列,所以添加到 TreeSet 集合中的元素必须具备排序的功能,无法排序的对象无法添加到 TreeSet 中的。

如果传递的是一个不能比较的对象:

public class test {public static void main(String[] args) {TreeSet treeSet = new TreeSet<>();treeSet.add(new A(6));treeSet.add(new A(2));treeSet.add(new A(3));treeSet.add(new A(4));}
}
class A{private int num;public A(int num) {this.num = num;}
}

image-20250308171942770

就会出现异常显示无法是实现比较的接口

Comparable 是排序接口,实习了该接口的类就具备了排序的功能,对象就可以进行排序

如果要比较我们就需要在A对象类里面实现Comparable 接口

class A implements Comparable{private int num;public A(int num) {this.num = num;}/*** A.compareTo(B)* 返回值:* 1表示A大于B* 0表示A等于B* -1表示A小于B* @param o* @return*/@Overridepublic int compareTo(Object o) {if (o instanceof A){A a = (A) o;return this.num - a.num;}return 0;}@Overridepublic String toString() {return "A{" +"num=" + num +'}';}
}
public class test {public static void main(String[] args) {TreeSet treeSet = new TreeSet<>();treeSet.add(new A(6));treeSet.add(new A(2));treeSet.add(new A(3));treeSet.add(new A(4));Iterator iterator = treeSet.iterator();while (iterator.hasNext()){System.out.println(iterator.next());}}
}

这时候输出:

image-20250308172236488

完美解决!

Map 接口

Set List 都是Collenction的子接口,Map接口是与Collenction完全独立的一个体系

Set 、List、Collenction都是只能操作一个元素,而Map可以操作一对数据,以Key-Value形式存在

Map接口常见方法

方法描述
int size()获取集合长度
boolean isEmpty()判断集合是否为空
boolean containsKey(Object key)判断集合中是否存在某个 key 值
boolean containsValue(Object key)判断集合中是否存在某个 value 值
V get(Object key)取出集合中 key 对应的 value
V put(K key,V value)向集合中添加一组 key-value 的元素
V remove(Object key)删除集合中 key 对应的 value
void clear()清除集合中的所有元素
Set keySet()取出集合中所有的 key,返回一个 Set 集合
Collection values()取出集合中所有的 value,返回一个 Collection 集合
Set entrySet()将 Map 对象转为 Set 对象
int hashCode()获取集合的散列值
boolean equals(Object o)比较两个集合是否相等

Map是一个接口,无法被实例化创建对象,而需要通过实现类来创建对象

HashMap:存储无序,key不能重复,值可以重复

TreeMap:存储有序,key不能重复,值可以重复

测试方法:

public class test {public static void main(String[] args) {testMapMethods();}public static void testMapMethods() {Map<String, Integer> map = new HashMap<>();// 测试 put 方法map.put("a", 1);map.put("b", 2);map.put("c", 3);System.out.println("插入元素后: " + map);// 测试 size 方法System.out.println("集合大小: " + map.size());// 测试 isEmpty 方法System.out.println("集合是否为空: " + map.isEmpty());// 测试 containsKey 方法System.out.println("是否包含键 'a': " + map.containsKey("a"));System.out.println("是否包含键 'd': " + map.containsKey("d"));// 测试 containsValue 方法System.out.println("是否包含值 1: " + map.containsValue(1));System.out.println("是否包含值 4: " + map.containsValue(4));// 测试 get 方法System.out.println("键 'a' 对应的值: " + map.get("a"));System.out.println("键 'd' 对应的值: " + map.get("d"));// 测试 keySet 方法Set<String> keySet = map.keySet();System.out.println("所有键的集合: " + keySet);// 测试 values 方法System.out.println("所有值的集合: " + map.values());// 测试 hashCode 方法System.out.println("集合的哈希码: " + map.hashCode());// 测试 remove 方法System.out.println("删除键 'a' 对应的值: " + map.remove("a"));System.out.println("删除后: " + map);// 测试 replace 方法System.out.println("将键 'b' 的值替换为 4: " + map.replace("b", 4));System.out.println("替换后: " + map);// 测试 clear 方法map.clear();System.out.println("清空后: " + map);System.out.println("清空后是否为空: " + map.isEmpty());}
}

输出:

image-20250308173640595

朋友们可以自己取尝试调用一下这些方法

TreeMap和HashMap差不多,但是这个会根据key排序

public static void main(String[] args) {TreeMap<Integer, String> map = new TreeMap<>();map.put(3, "Three");map.put(1, "One");map.put(2, "Two");map.put(2, "Two");System.out.println(map);
}

测试:

image-20250308230937789

Collections 工具类

集合除了可以存储数据之外,还提供了很多方法来对数据进行操作,但是这些方法都有其局限性,实际操作起来不是很方便,JDK 提供了一个工具类 Collections,专门用来操作集合,添加元素、元素排序、替换元素。

Collections 常用方法

方法描述
sort根据集合泛型对应的类实现的 Comparable 接口对集合进行排序
sort根据 Comparator 接口对集合进行排序
binarySearch查找元素在集合中的下标,要求集合元素必须是升序排列
get根据下标找到集合中的元素
reverse对集合元素的顺序进行反转
swap交换集合中指定位置的两个元素
fill将集合中的所有元素进行替换
min返回集合中最小的元素
max返回集合中最大的元素
replaceAll将集合中的所有元素进行替换
addAll向集合中添加元素

部分代码示例:

sort方法:

// 定义一个实现了Comparable接口的类
class Person implements Comparable<Person> {private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}@Overridepublic int compareTo(Person p) {return Integer.compare(this.age, p.age);}@Overridepublic String toString() {return "Person{name='" + name + "', age=" + age + "}";}
}public class TestSort {public static void main(String[] args) {List<Person> list = new ArrayList<>();list.add(new Person("Alice", 25));list.add(new Person("Bob", 30));list.add(new Person("Charlie", 20));Collections.sort(list); // 根据age排序System.out.println(list);}
}

输出:

image-20250308232212807

实现compareTo方法,然后可以使得按照age排序

binarySearch (查找元素下标,要求集合升序排列)

public static void main(String[] args) {List<Integer> list = Arrays.asList(1, 3, 5, 7, 9);int index = Collections.binarySearch(list, 5); // 返回元素5的索引System.out.println("Index of 5: " + index);
}

输出:

image-20250308232348783

get (根据下标找到集合中的元素)

public static void main(String[] args) {List<String> list = Arrays.asList("apple", "orange", "banana");String element = list.get(1); // 获取第二个元素System.out.println("Element at index 1: " + element);
}

reverse (反转集合顺序)

public static void main(String[] args) {List<String> list = Arrays.asList("apple", "orange", "banana");Collections.reverse(list);System.out.println("Reversed list: " + list);
}

image-20250308232514150

swap (交换指定位置的两个元素)

public static void main(String[] args) {List<String> list = Arrays.asList("apple", "orange", "banana");Collections.swap(list, 0, 2); // 交换第一个和第三个元素System.out.println("Swapped list: " + list);
}

image-20250308232546509

fill (将集合中的所有元素替换为指定值)

public static void main(String[] args) {List<String> list = new ArrayList<>(Arrays.asList("apple", "orange", "banana"));Collections.fill(list, "fruit");System.out.println("Filled list: " + list);
}

image-20250308232612322

min (返回集合中最小的元素)、max (返回集合中最大的元素)

public static void main(String[] args) {List<Integer> list = Arrays.asList(5, 3, 8, 1, 9);Integer max = Collections.max(list);Integer min = Collections.min(list);System.out.println("Maximum value: " + max);System.out.println("Minimum value: " + min);
}

image-20250308232728922

replaceAll (将集合中的所有元素替换为指定值)

public static void main(String[] args) {List<String> list = Arrays.asList("apple", "orange", "banana");Collections.replaceAll(list, "apple", "fruit");System.out.println("Replaced list: " + list);
}

image-20250308232800876

addAll (向集合中添加所有指定元素)

public static void main(String[] args) {List<String> list = new ArrayList<>();List<String> toAdd = Arrays.asList("apple", "orange", "banana");Collections.addAll(list, "grape", "peach");// 或者使用addAll方法list.addAll(toAdd);System.out.println("Added list: " + list);
}

image-20250308232830429

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

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

相关文章

windows:curl: (60) schannel: SEC_E_UNTRUSTED_ROOT (0x80090325)

目录 1. git update-git-for-windows 报错2. 解决方案2.1. 更新 CA 证书库2.2. 使用 SSH 连接&#xff08;推荐&#xff09;2.3 禁用 SSL 验证&#xff08;不推荐&#xff09; 1. git update-git-for-windows 报错 LenovoLAPTOP-EQKBL89E MINGW64 /d/YHProjects/omni-channel-…

蚂蚁集团转正实习大模型算法岗内推

1.负责以大模型为代表的A转术能力的建设和优化&#xff0c;打造业界领先的A(技术系统&#xff0c;主要职责包括A系统结构设计、RAG 系统开发、大模型凯练数据构建、大模型能力评测、大模型准理效果和效率优化等 2.紧密跟踪、探索大模型方向前沿技术&#xff0c;依托丰富目体系化…

Web前端开发——HTML基础下

HTML语法 一表格1.基本格式2.美化表格合并居中属性 二表单1.input2.select3.textarea4.button5.date6.color7.checkbox8.radio9.range10.number 一表格 1.基本格式 HTML表格由<table>标签定义 其中行由<tr>标签定义&#xff0c;单元格由<td>定义。我们先来…

小程序事件系统 —— 33 事件传参 - data-*自定义数据

事件传参&#xff1a;在触发事件时&#xff0c;将一些数据作为参数传递给事件处理函数的过程&#xff0c;就是事件传参&#xff1b; 在微信小程序中&#xff0c;我们经常会在组件上添加一些自定义数据&#xff0c;然后在事件处理函数中获取这些自定义数据&#xff0c;从而完成…

vuejs相关链接和格式化插件推荐

vue官网&#xff1a; https://cn.vuejs.org/ 配合路由设置&#xff1a; https://router.vuejs.org/zh/guide/ element plus (vue3) | element UI (vue2)&#xff1a; https://element-plus.org/zh-CN/#/zh-CN 构建工具vite&#xff1a; https://cn.vitejs.dev/ 右键选择…

IDEA中Git版本回退终极指南:Reset与Revert双方案详解

目录 前言一、版本回退前置知识二、Reset方案&#xff1a;整体改写历史1、IDEA图形化操作&#xff08;推荐&#xff09;1.1、查看提交历史1.2、选择目标版本1.3、选择回退模式1.3.1、Soft&#xff08;推荐&#xff09;1.3.2、Mixed1.3.3、Hard&#xff08;慎用&#xff09;1.3.…

AI-Deepseek + PPT

01--Deepseek提问 首先去Deepseek问一个问题&#xff1a; Deepseek的回答&#xff1a; 在汽车CAN总线通信中&#xff0c;DBC文件里的信号处理&#xff08;如初始值、系数、偏移&#xff09;主要是为了 将原始二进制数据转换为实际物理值&#xff0c;确保不同电子控制单元&…

实验一:在Windows 10/11下配置和管理TCP/IP

目录 1.【实训目标】 2.【实训环境】 3.【实训内容】 4.【实训步骤】 1.【实训目标】 1.了解网络基本配置中包含的协议、服务、客户端。 2.了解Windows支持的网络协议及参数设置方法。 3.掌握TCP/IP协议的配置。 2.【实训环境】 硬件环境&#xff1a;每人一台计算机&a…

一招解决Pytorch GPU版本安装慢的问题

Pytorch是一个流行的深度学习框架&#xff0c;广泛应用于计算机视觉、自然语言处理等领域。安装Pytorch GPU版本可以充分利用GPU的并行计算能力&#xff0c;加速模型的训练和推理过程。接下来&#xff0c;我们将详细介绍如何在Windows操作系统上安装Pytorch GPU版本。 查看是否…

为解决局域网IP、DNS切换的Windows BAT脚本

一、背景 为解决公司普通人员需要切换IP、DNS的情况&#xff0c;于是搞了个windows下的bat脚本&#xff0c;可以对有线网络、无线网络进行切换设置。 脚本内容 echo off title 多网络接口IP切换工具:menu cls echo echo 请选择要配置的网络接口: echo echo 1. 有线网络&am…

OpenCV计算摄影学(14)实现对比度保留去色(Contrast Preserving Decolorization)的函数decolor()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 将彩色图像转换为灰度图像。它是数字印刷、风格化的黑白照片渲染&#xff0c;以及许多单通道图像处理应用中的基本工具。 cv::decolor 是 OpenCV…

Qt常用控件之 纵向列表QListWidget

纵向列表QListWidget QListWidget 是一个纵向列表控件。 QListWidget属性 属性说明currentRow当前被选中的是第几行。count一共有多少行。sortingEnabled是否允许排序。isWrapping是否允许换行。itemAlignment元素的对齐方式。selectRectVisible被选中的元素矩形是否可见。s…

关于 QPalette设置按钮背景未显示出来 的解决方法

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/146047054 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

PostgreSQL 安装与使用

下载地址: EDB: Open-Source, Enterprise Postgres Database Management 安装图形化安装界面安装。安装完后将bin目录配置到系统环境变量 执行psql -h localhost -p 5432 -U postgres 密码在安装过程中设置的 ​ 0、修改密码 ALTER USER sonar WITH PASSWORD 123456; 1、新…

Linux 开发工具

linux中&#xff0c;常见的软件安装方式---下载 yum/apt.rpm安装包安装源码安装 yum 查看软件包 通过yumlist命令可以罗列出当前⼀共有哪些软件包.由于包的数⽬可能⾮常之多,这⾥我们需要使⽤ grep 命令只筛选出我们关注的包.例如: # Centos $ yum list | grep lrzsz lr…

Agent革命:Manus如何用工作流拆解掀起AI生产力革命

一、现象级产品的诞生背景 2025年3月6日&#xff0c;一款名为Manus的AI产品在技术圈引发地震式传播。其官方测试数据显示&#xff1a;在GAIA基准测试中&#xff0c;基础任务准确率达86.5%&#xff08;接近人类水平&#xff09;&#xff0c;中高级任务完成率突破57%。这标志着A…

网络安全等级保护2.0 vs GDPR vs NIST 2.0:全方位对比解析

在网络安全日益重要的今天&#xff0c;各国纷纷出台相关政策法规&#xff0c;以加强信息安全保护。本文将对比我国网络安全等级保护2.0、欧盟的GDPR以及美国的NIST 2.0&#xff0c;分析它们各自的特点及差异。 网络安全等级保护2.0 网络安全等级保护2.0是我国信息安全领域的一…

MySQL 面试篇

MySQL相关面试题 定位慢查询 **面试官&#xff1a;**MySQL中&#xff0c;如何定位慢查询? 我们当时做压测的时候有的接口非常的慢&#xff0c;接口的响应时间超过了2秒以上&#xff0c;因为我们当时的系统部署了运维的监控系统Skywalking &#xff0c;在展示的报表中可以看到…

MyBatis 操作数据库

目录 1、MyBatis 是什么2、配置 MyBatis 开发环境2.1、添加 MyBatis 框架支持2.1.1、老项目添加 MyBatis2.1.2、新项目添加 MyBatis 2.2、配置数据库连接字符串2.3、配置 MyBatis 中的 XML 路径 3、添加业务代码3.1、添加实体类3.2、添加 mapper 接口3.3、添加 xml 文件3.4、添…

Jmeter进行http接口测试详解

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 本文主要针对http接口进行测试&#xff0c;使用 jmeter工具实现。 Jmeter工具设计之初是用于做性能测试的&#xff0c;它在实现对各种接口的调用方面已经做的比较…