iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >java中Pair和Map的区别有哪些
  • 771
分享到

java中Pair和Map的区别有哪些

2023-06-14 07:06:54 771人浏览 泡泡鱼
摘要

这篇文章主要介绍了java中Pair和Map的区别有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在核心Java库中可以使用配对(Pair)的实现。除此之外,某些第三方库

这篇文章主要介绍了java中Pair和Map的区别有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

在核心Java库中可以使用配对(Pair)的实现。除此之外,某些第三方库,比如Apache Commons和Vavr,已经在各自的api中公开了这个功能。

核心java配对实现

Pair类

Pair类在javafx.util 包中,类构造函数有两个参数,键及对应值:

Pair<Integer, String> pair = new Pair<>(1, "One");Integer key = pair.geTKEy();String value = pair.getValue();

示例描述使用Pair类实现简单Integer到String的映射。示例中getKey方法返回key对象,getValue方法返回对应值对象。

AbstractMap.SimpleEntry 和 AbstractMap.SimpleImmutableEntry

SimpleEntry定义在抽象类AbstractMap里面,其构造方法与Pair类似:

AbstractMap.SimpleEntry<Integer, String> entry = new AbstractMap.SimpleEntry<>(1, "one");Integer key = entry.getKey();String value = entry.getValue();

其键和值可以通过标准的getter和setter方法获得。

另外AbstractMap 类还包含一个嵌套类,表示不可变配对:SimpleImmutableEntry 类。

AbstractMap.SimpleImmutableEntry<Integer, String> entry = new AbstractMap.SimpleImmutableEntry<>(1, "one");

应用方式与可变的配对一样,除了配置的值不能修改,尝试修改会抛出UnsupportedOperationException异常。

Apache Commons

在Apache Commons库中,org.apache.commons.lang3.tuple 包中提供Pair抽象类,不能被直接实例化,可以通过Pair.of(L,R)实例化,提供了getLeft()和getRight()方法。

Pair<Integer, String> pair= Pair.of(2, "two");Integer key = pair.getKey();String value = pair.getValue();Integer key = pair.getLeft();String value = pair.getRight();

其有两个子类,分别代表可变与不可变配对:ImmutablePair 和 MutablePair。三者都实现了访问key/value以及setter和getter方法和getLeft()和getRight()方法:

ImmutablePair<Integer, String> pair = new ImmutablePair<>(2, "Two");Integer key = pair.getKey();String value = pair.getValue();Integer key = pair.getLeft();String value = pair.getRight();

尝试在ImmutablePair 执行setValue方法,会抛出UnsupportedOperationException异常。Pair.of是不可变配对。
但在可变配对上执行完全正常:

Pair<Integer, String> pair = new MutablePair<>(3, "Three");pair.setValue("New Three");

Vavr库

Vavr库中不可变的Tuple2类提供配对功能:

Tuple2<Integer, String> pair = new Tuple2<>(4, "Four");  Integer key = pair._1();  String value = pair._2();

在这个实现中,创建对象后不能修改,所以更新方法返回改变后的新实例:

tuplePair = pair.update2("New Four");

举个例子

需求:分别用Pair和Map来对value做排序并打印结果。

 // 使用Pair来排序    JSONObject jsonObject1 = new JSONObject();    jsonObject1.put("a", 9);    JSONObject jsonObject2 = new JSONObject();    jsonObject2.put("a", 4);    JSONObject jsonObject3 = new JSONObject();    jsonObject3.put("a", 7);    JSONObject jsonObject4 = new JSONObject();    jsonObject4.put("a", 8);    ArrayList<Pair<Integer, JSONObject>> pairs = new ArrayList<>();    pairs.add(Pair.of(1, jsonObject1));    pairs.add(Pair.of(2, jsonObject2));    pairs.add(Pair.of(3, jsonObject3));    pairs.add(Pair.of(4, jsonObject4));    List<Pair<Integer, JSONObject>> result = pairs.stream().sorted(Comparator.comparingInt(o -> o.getRight().getInteger("a"))).collect(Collectors.toList());    result.forEach(System.out::println);    System.out.println("==============================");        // 使用map来排序    HashMap<Integer, JSONObject> integerJSONObjectHashMap = new HashMap<>();    integerJSONObjectHashMap.put(1, jsonObject1);    integerJSONObjectHashMap.put(2, jsonObject2);    integerJSONObjectHashMap.put(3, jsonObject3);    integerJSONObjectHashMap.put(4, jsonObject4);    List<Map.Entry<Integer, JSONObject>> result2 = integerJSONObjectHashMap.entrySet().stream().sorted(Comparator.comparingInt(o -> o.getValue().getInteger("a"))).collect(Collectors.toList());    result2.forEach(System.out::println);

感谢你能够认真阅读完这篇文章,希望小编分享的“java中Pair和Map的区别有哪些”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: java中Pair和Map的区别有哪些

本文链接: https://www.lsjlt.com/news/268961.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java中Pair和Map的区别有哪些
    这篇文章主要介绍了java中Pair和Map的区别有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在核心Java库中可以使用配对(Pair)的实现。除此之外,某些第三方库...
    99+
    2023-06-14
  • 浅析java中Pair和Map的区别
    目录核心java配对实现Pair类AbstractMap.SimpleEntry 和 AbstractMap.SimpleImmutableEntryApache CommonsVa...
    99+
    2022-11-11
  • redis和map有哪些区别
    这篇文章将为大家详细讲解有关redis和map有哪些区别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。缓存的区别缓存分为本地缓存和分布式缓存。以java为例,使用自带的m...
    99+
    2022-10-18
  • js中filter和map的区别有哪些
    这篇文章主要介绍js中filter和map的区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!JavaScript有什么特点1、js属于一种解释性脚本语言;2、在绝大多数浏览器的支持下,js可以在多种平台下运行...
    99+
    2023-06-14
  • es6中filter和map的区别有哪些
    今天小编给大家分享一下es6中filter和map的区别有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们...
    99+
    2022-10-19
  • es6中map和object的区别有哪些
    本篇内容介绍了“es6中map和object的区别有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!区别:1、Map的键可以是任意值,而O...
    99+
    2023-07-04
  • es6中map和foreach有哪些区别
    本篇内容主要讲解“es6中map和foreach有哪些区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“es6中map和foreach有哪些区别”吧! ...
    99+
    2022-10-19
  • es6的set和map的区别有哪些
    今天小编给大家分享一下es6的set和map的区别有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来...
    99+
    2022-10-19
  • Java中==和equals()的区别有哪些
    小编给大家分享一下Java中==和equals()的区别有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1. ==== 是运算符,用来判断两个值是否相等,==可以使用在基本数据类型变量和引用数据类型变量中1.1 基本数...
    99+
    2023-06-25
  • javascript和java的区别有哪些
    这篇文章主要介绍了javascript和java的区别有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 Java 和 JavaScript 不同之处: ...
    99+
    2023-06-27
  • java ==和equals的区别有哪些
    总结的来说:(1)对于==,比较的是值是否相等;如果作用于基本数据类型的变量,则直接比较其存储的“值”是否相等;如果作用于引用类型的变量,则比较的是所指向的对象的地址。(2)对于equals方法,注意:equals方法不能作用于基本数据类型...
    99+
    2020-10-25
    java入门 java == equals 区别
  • c#和java的区别有哪些
    Java和C#都是编程的语言,它们是两个不同方向的两种语言。相同点:他们都是面向对象的语言,也就是说,它们都能实现面向对象的思想(封装、继承、多态)。区别:1.c#中的命名空间是namespace类似于Java中的package(包),在J...
    99+
    2021-05-04
    java教程 c# java 区别
  • html5和java的区别有哪些
    html5和java的区别有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。html5和java的区别:1、java主要用来做andro...
    99+
    2022-10-19
  • node.js和java的区别有哪些
    这篇文章主要为大家展示了node.js和java的区别有哪些,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“node.js和java的区别有哪些”这篇文章吧。 ...
    99+
    2022-10-19
  • .net和java的区别有哪些
    .net和java的区别有:1.本质不同;2.应用领域不同;3.平台构架不同;4.运行环境不同;.net和java的区别有以下几点本质不同.net是一个跨语言的平台;而java是一个开源的跨平台的语言。应用领域不同.net主要应用于中小型公...
    99+
    2022-10-10
  • java和c++的区别有哪些
    这篇文章主要介绍java和c++的区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!区别:Java不可以将一个非布尔值当做布尔值在逻辑表达式中使用,C++却可以。C++引入了操作符重载机制,Java不支持。C+...
    99+
    2023-06-14
  • android中java和Kotlin的区别有哪些
    Android中Java和Kotlin是两种不同的编程语言。以下是它们之间的一些区别: 语法:Java使用较为繁琐的语法,而Ko...
    99+
    2023-10-25
    android java Kotlin
  • java中LinkedHashMap和HashMap的区别有哪些
    这篇文章主要介绍了java中LinkedHashMap和HashMap的区别有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Java的优点是什么1. 简单,只需理解基本的...
    99+
    2023-06-14
  • java中sleep()和wait()的区别有哪些
    这篇文章主要介绍java中sleep()和wait()的区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2. 面向对象;...
    99+
    2023-06-14
  • java中start()和run()的区别有哪些
    这篇文章主要介绍了java中start()和run()的区别有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Java是什么Java是一门面向对象编程语言,可以编写桌面应用...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作