《Java工程师必读手册》——Java编程技巧系列——Java编程技巧之数据结构(3)

简介: 《Java工程师必读手册》——Java编程技巧系列——Java编程技巧之数据结构(3)

接上篇:https://developer.aliyun.com/article/1228149?spm=a2c6h.13148508.setting.26.21084f0eNCKPti


四、 使用Pair实现成对结果的返回

 

在C/C++语言中,Pair(对)是将两个数据类型组成一个数据类型的容器,比如std::pair。

 

Pair主要有两种用途:

 

把key和value放在一起成对处理,主要用于Map中返回名值对,比如Map中的Entry类;

当一个函数需要返回两个结果时,可以使用Pair来避免定义过多的数据模型类。

 

第一种用途比较常见,这里主要说明第二种用途。

 

1. 定义模型类实现成对结果的返回

 

函数实现代码

 

image.png 

函数使用案例

 

image.png 

 

2. 使用Pair类实现成对结果的返回

 

在JDK中,没有提供原生的Pair数据结构,也可以使用Map::Entry代替。不过,Apache的commons-lang3包中的Pair类更为好用,下面便以Pair类进行举例说明。

 

函数实现代码

 

image.png

 

函数使用案例

 

image.png

 

此外,还有Triple类可以支持三个对象一起返回。

 

五、 定义Enum类实现取值和描述

 

在C++、Java等计算机编程语言中,枚举类型(Enum)是一种特殊数据类型,能够为一个变量定义一组预定义的常量。在使用枚举类型的时候,枚举类型变量取值必须为其预定义的取值之一。

 

1. 用class关键字实现的枚举类型

 

在JDK5之前,Java语言不支持枚举类型,只能用类(class)来模拟实现枚举类型。

 

image.png 

 

2. 用enum关键字实现的枚举类型

 

JDK5提供了一种新的类型——Java的枚举类型,关键字enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常量使用,这是一种非常有用的功能。

 

image.png 

 

其实,Enum类型就是一个语法糖,编译器帮我们做了语法的解析和编译。通过反编译,可以看到Java枚举编译后实际上是生成了一个类,该类继承了java.lang.Enum,并添加了values()、valueOf()等枚举类型通用方法。

 

 接下篇:https://developer.aliyun.com/article/1228147?groupCode=java

相关文章
|
10天前
|
存储 Java
Java数据结构:链表
Java数据结构:链表
22 2
|
10天前
|
算法 Java
Java数据结构——队列
Java数据结构——队列
26 4
|
10天前
|
Java 索引
Java数据结构——栈
Java数据结构——栈
23 1
|
10天前
|
Java
DAY-1 | Java数据结构之链表:删除无头单链表中等于给定值 val 的所有节点
力扣203题解:使用时间复杂度为O(n)的思路删除链表中所有值为key的元素。引入辅助指针pre,记录cur的前一个节点,遍历链表时,若cur.val!=key,pre和cur同时前进;若cur.val==key,则pre.next=cur.next,cur继续前进,确保pre不急于跟随以处理连续相同值的情况。遍历结束后,处理头节点可能需要删除的特殊情况。
23 0
|
13天前
|
算法 搜索推荐 Java
Java数据结构 -- 常见算法分析(查找算法、排序算法)精解详解!!!
Java数据结构 -- 常见算法分析(查找算法、排序算法)精解详解!!!
7 0
|
6天前
|
Java 开发者 UED
掌握Java多线程编程:从基础到高级
【5月更文挑战第31天】本文深入探讨了Java多线程编程的核心概念,包括线程的创建、生命周期、同步机制以及高级并发工具。通过实际示例和代码片段,读者将学会如何有效地管理和协调线程,以编写高效且稳定的并发应用程序。
|
6天前
|
安全 Java 调度
Java语言多线程编程技术深度解析
Java语言多线程编程技术深度解析
274 1
|
20小时前
|
监控 算法 Java
Java性能优化(九)-多线程调优-垃圾回收机制优化
Java性能优化(九)-多线程调优-垃圾回收机制优化
9 0
|
20小时前
|
缓存 Java 测试技术
Java性能优化(八)-多线程调优-线程池大小设置
Java性能优化(八)-多线程调优-线程池大小设置
3 0