Java中集合类型的转换
在Java编程中,集合框架(Collections Framework)提供了一套用于存储和处理对象集合的接口和类。由于集合框架的灵活性和强大功能,我们经常需要在不同的集合类型之间进行转换。本文将介绍Java中常见的集合类型转换方法,包括从List
到Set
,从Set
到List
,以及Map
的键和值的转换。
1. List到Set的转换
List
和Set
都是存储元素的集合,但Set
不允许重复元素。将List
转换为Set
是一个常见的操作,尤其是在需要去除重复元素时。
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;public class CollectionConversion {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("Apple");list.add("Banana");list.add("Apple"); // 重复元素Set<String> set = new HashSet<>(list);System.out.println(set); // 输出: [Banana, Apple]}
}
在这个例子中,我们使用HashSet
的构造函数直接将List
作为参数传入,从而实现了转换。由于HashSet
不允许重复,所以重复的元素会被自动去除。
2. Set到List的转换
将Set
转换回List
是一个简单的操作,因为Set
实现了Collection
接口,而List
也是Collection
的子类型。
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;public class CollectionConversion {public static void main(String[] args) {Set<String> set = new HashSet<>();set.add("Apple");set.add("Banana");List<String> list = new ArrayList<>(set);System.out.println(list); // 输出: [Apple, Banana]}
}
这里,我们通过将Set
作为参数传递给ArrayList
的构造函数,轻松地完成了转换。
3. Map的键和值的转换
Map
是键值对的集合,有时我们需要将键转换为值,或者将值转换为键。这可以通过Map
的entrySet()
、keySet()
和values()
方法来实现。
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;public class CollectionConversion {public static void main(String[] args) {Map<String, Integer> map = new HashMap<>();map.put("Apple", 1);map.put("Banana", 2);// 将键转换为值Map<Integer, String> invertedMap = map.entrySet().stream().collect(Collectors.toMap(Map.Entry::getValue,Map.Entry::getKey,(e1, e2) -> e1,HashMap::new));System.out.println(invertedMap); // 输出: {1=Apple, 2=Banana}}
}
在这个例子中,我们使用了Java 8的流(Stream)API来转换Map
的键和值。通过entrySet().stream()
获取流,然后使用collect()
方法和Collectors.toMap()
来创建一个新的Map
,其中键和值的位置被交换。
结论
Java的集合框架提供了灵活的方法来处理不同类型的集合之间的转换。无论是从List
到Set
,还是从Set
到List
,或者在Map
中转换键和值,都有简单有效的方法来实现。掌握这些转换技巧,可以提高编程效率,使代码更加简洁和高效。
相关文章:
Java中集合类型的转换
在Java编程中,集合框架(Collections Framework)提供了一套用于存储和处理对象集合的接口和类。由于集合框架的灵活性和强大功能,我们经常需要在不同的集合类型之间进行转换。本文将介绍Java中常见的集合类型转换方法,包…...
汽车售后TPMS浅谈
汽车售后中的TPMS,即轮胎压力监测系统(Tire Pressure Monitoring System),是一种重要的汽车安全系统。以下是对汽车售后TPMS的详细解释: 一、TPMS的作用 TPMS的主要作用是在汽车行驶过程中对轮胎气压进行实时自动监测…...

LUCEDA IPKISS Tutorial 77:在版图一定范围内填充dummy
案例分享:在给定的Shape内填充dummy 所有代码如下: from si_fab import all as pdk from ipkiss3 import all as i3 from shapely.geometry import Polygon, MultiPolygon import numpy as np import matplotlib.pyplot as pltclass CellFilledWithCon…...

TON生态小游戏开发:推广、经济模型与UI设计的建设指南
随着区块链技术的快速发展,基于区块链的Web3游戏正引领行业变革。而TON生态小游戏,借助Telegram庞大的用户基础和TON(The Open Network)链上技术,已成为这一领域的明星之一。国内外开发者正迅速涌入,开发和…...
Python 量子机器学习:基础概念、关键算法与应用实践
🌟 Python 量子机器学习:基础概念、关键算法与应用实践 目录 🌍 量子计算的基本原理 量子位、叠加、纠缠等概念解析量子计算如何影响机器学习:速度与效率的提升 🚀 量子机器学习中的关键算法 量子支持向量机…...

信息安全数学基础(29) x^2 + y^2 = p
前言 方程 x2y2p 是一个涉及整数解和素数 p 的二次方程。这个方程在数论和几何中都有重要的意义,特别是在研究圆的整数点和费马大定理的背景下。 一、定义与背景 方程 x2y2p 表示一个平面上的圆,其圆心在原点 (0,0),半径为 p(当…...

ChatGPT国内中文版镜像网站整理合集(2024/10/06)
一、GPT中文镜像站 ① yixiaai.com 支持GPT4、4o以及o1,支持MJ绘画 ② chat.lify.vip 支持通用全模型,支持文件读取、插件、绘画、AIPPT ③ AI Chat 支持GPT3.5/4,4o以及MJ绘画 1. 什么是镜像站 镜像站(Mirror Siteÿ…...

图文深入理解Oracle DB Scheduler
值此国庆佳节,深宅家中,闲来无事,就多写几篇博文。今天继续宅继续写。本篇图文深入介绍Oracle DB Scheduler。 Oracle为什么要使Scheduler? 答案就是6个字:简化管理任务。 • Scheduler(调度程序&#x…...
gin如何具体利用Server-Send-Events(SSE)实时推送技术实现消息推送
目录 业务场景 解决方案 1. 轮询 2. WebSocket 3. SSE(Server-Send-Events) 代码实现 总结 业务场景 在抖音、美团等APP中,我们经常会遇到APP内部的消息推送,如关注的人的动态消息推送、点赞评论互动消息推送以及算法推荐消息推送。这些场景都是…...
写端口-tcp udp不同方式发包和接包
最近一直在学习网络编程,今天把 socket部分做一个总结。 Python 的socket库可以实现不同协议不同地址的发包和收包,无奈资料很少,官方例子有限,大神博客很少提及, 经过一番尝试后,总结以下几点用法以便大家…...

计算机的错误计算(一百二十)
摘要 探讨在许多应用中出现的函数 的计算精度问题。 例1. 考虑在许多应用中出现的函数 计算 不妨在Python下计算: 若用下列Rust代码在线计算: fn f(x: f64) -> f64 {(x.exp() - 1.0) / x }fn main() {let result f(0.9e-13);println!("…...

Spring Boot 中使用 JSON Schema 来校验复杂 JSON 数据
博客主页: 南来_北往 系列专栏:Spring Boot实战 在现代软件开发中,尤其是构建 RESTful API 时,处理 JSON 数据已成为一项基本任务。JSON(JavaScript Object Notation)因其轻量级和易于人类阅读的特点ÿ…...

QT实现Opencv图像处理
案例 基于QT的人脸识别 pro文件需要加以下代码 INCLUDEPATH E:/opencv/opencv3.4-qt-intall/install/include INCLUDEPATH E:/opencv/opencv3.4-qt-intall/install/include/opencv INCLUDEPATH E:/opencv/opencv3.4-qt-intall/install/include/opencv2 LIBS E:/opencv/o…...

刚转Mac的新手如何卸载不需要的应用程序
最开始转Mac系统的时候很是苦恼,到底该怎么卸载App啊,App直接拖到废纸篓真的能卸载干净吗,卸载App时会不会留下一些文件残留,慢慢的会不会占满内存,于是我找到了一个免费的卸载工具——XApp。 这是一款Mac应用程序卸载…...
Unity 3d 继承MonoBahaviour的单例
在使用Unity3d开发游戏或做客户端项目时,单例是最常见的模式之一,他简单了类的创建,在代码中可以直接调用。下面是两个例子,代码两种不同类型的单例,一个是基本类的单例基类,不是unity MonoBehaviour的类都…...

grafana version 11.1.0 设置Y轴刻度为1
grafana 版本 # /usr/share/grafana/bin/grafana --version grafana version 11.1.0设置轴 Axis 搜索 Standard options 在"Decimals"中输入0,确保只显示整数...

Elasticsearch的安装与配置
注意:elasticsearch 禁止安装在/root路径下! 1、创建用户组 groupadd elastic 2、创建用户 useradd es -d /home/es -g elastic echo es | passwd es --stdin 3、给新创建的用户进行授权 chown -R es:elastic /home/es chmod -R 775 /home/es 4…...

win0删除 Windows.old
参考:https://blog.csdn.net/xitongzhijia_abc/article/details/126270452 win10如下所示: 打开 设置–>系统—>存储...
常见IDE及其编译器的讲解
IDE 意思是:集成开发环境 常见的IDE有哪些? eg. devC,VS2022,xcode,codeblocks,clion常见编译器有哪些? eg.msvc,gcc,clang微软的底层编译器是msvc苹果的底层编译器是clang IDE编译器特点devC集成了gcc小巧,工具简单&…...

用SQLyog连接mysql提示2058错误
1)在cmd下(必须是这个,不能是gitbash) // step1:修改下数据库 C:\Users\elex>mysql -uroot -p Enter password: **** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 97 Server version: 8.1.0 MySQL Community Server - GPLCopy…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...

Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...

HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...

JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...