首页 > 其他分享 >JDK 21新特性---有序集合

JDK 21新特性---有序集合

时间:2023-10-08 13:33:39浏览次数:31  
标签:21 JDK System --- firstEntry SequencedCollection println Entry out

概述

  • 在JDK 21中,正式加入了序列集合的功能,新增了SequencedCollection,SequencedSet,SequencedMap接口,使得Java中的有序集合类可以按照统一的方法来进行集合的操作。
  • 架构图:
    image

三大接口

  • SequencedCollection

         interface SequencedCollection<E> extends Collection<E> {
             SequencedCollection<E> reversed();
             // methods promoted from Deque
             void addFirst(E);
             void addLast(E);
             E getFirst();
             E getLast();
             E removeFirst();
             E removeLast();
         }
    
  • SequencedSet

          ```java
          interface SequencedSet<E> extends Set<E>, SequencedCollection<E> {
              SequencedSet<E> reversed();    // covariant override
          }
          ```
    
  • SequencedMap

         interface SequencedMap<K,V> extends Map<K,V> {
             SequencedMap<K,V> reversed();
             SequencedSet<K> sequencedKeySet();
             SequencedCollection<V> sequencedValues();
             SequencedSet<Entry<K,V>> sequencedEntrySet();
             V putFirst(K, V);
             V putLast(K, V);
             // methods promoted from NavigableMap
             Entry<K, V> firstEntry();
             Entry<K, V> lastEntry();
             Entry<K, V> pollFirstEntry();
             Entry<K, V> pollLastEntry();
         }
    

示例

	List<Integer> originalList = Lists.newArrayList(1, 2, 3, 4, 5);
	List<Integer> reversedList=originalList.reversed();
	System.out.println("original list : " + originalList);
	System.out.println("reversed list : " + reversedList);
	originalList.addLast(6);
	System.out.println("modified original list : " + originalList);
	System.out.println("modified reversed list : " + reversedList);
	SequencedMap<String,Integer> sequencedMap=Maps.newLinkedHashMap();
	sequencedMap.put("a",1);
	sequencedMap.put("b",2);
	Map.Entry<String,Integer> firstEntry=sequencedMap.entrySet().iterator().next();
	System.out.println("map first value : "+firstEntry.getValue());
	firstEntry.setValue(100);
	System.out.println("modified map first value : "+firstEntry.getValue());
	Map.Entry<String,Integer> firstEntry2=sequencedMap.firstEntry();
	System.out.println("map first value : "+firstEntry2.getValue());
	//抛出UnsupportedOperationException
	firstEntry2.setValue(200);

标签:21,JDK,System,---,firstEntry,SequencedCollection,println,Entry,out
From: https://www.cnblogs.com/skysea82410/p/17748658.html

相关文章

  • 学习C语言心得-do...while循环
    do....while(上来就干!)习题:打印1-10数字#include<stdio.h>//打印1-10intmain(){ inti=1; do { printf("%d",i); i++; } while(i<11); return0;}运行结果:continue中i++放置位置区别:1,i++在continue后方:#include<stdio.h>//打印1-10intmain()......
  • 2023-2024-1 20231421 《计算机基础与程序设计》第二周学习总结
    作业信息作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK02作业目标:自学《计算机科学概论》和《c语言程序设计》第一章教材学习内容总结一、《计算机科学概论》1.计算机系统是由信息,硬件,程序设计,操作系统,应用和通信由内而外组成的2.了解了计算机的历史二、《c......
  • 215. 数组中的第K个最大元素
    给定整数数组nums和整数k,请返回数组中第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。你必须设计并实现时间复杂度为O(n)的算法解决此问题。示例1:输入:[3,2,1,5,6,4],k=2输出:5代码classSolution{publ......
  • 非select 下拉框选定ul-li下拉选项, 元素是隐藏的需要用js修改为其属性为可见后,再做元
    遇到问题html中定位的下拉框内容是属性是隐藏的<ulid="reasonselect"style="display:none"fwin="mods"><li>广告/SPAM</li><li>恶意灌水</li><li>违规内容</li><li>文不对题</li><li>重复发帖</li>&......
  • P8813 [CSP-J 2022] 乘方
    题目描述小文同学刚刚接触了信息学竞赛,有一天她遇到了这样一个题:给定正整数\(a\)和\(b\),求\(a^b\)的值是多少。\(a^b\)即\(b\)个\(a\)相乘的值,例如\(2^3\)即为\(3\)个\(2\)相乘,结果为\(2\times2\times2=8\)。“简单!”小文心想,同时很快就写出了一份程序,......
  • 学期2023-2024-1 20231417 《计算机基础与程序设计》第二周学习总结
    计算机科学概论第一章1.计算系统分为:软件,硬件,数据2.计算系统的层次是抽象c语言程序设计1.生如了解了什么是编程,为什么要学习编程以及怎么学习学习进度条 代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长目标5000行30篇400小时 第一周 1/1......
  • 2023-2024-20231409佟伟铭第二周学习总结
    学期2023-2024-120231409《计算机基础与程序设计》第二周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第二周作业这个作业的目标自学教材:计算机科学概论第1章并完成云班课......
  • Centos系统安装MySQL数据库时,要以不安全的方式连接至 dev.mysql.com,使用“--no-check-
    解决:要以不安全的方式连接至dev.mysql.com,使用“--no-check-certificate” 问题:[root@192桌面]#wgethttps://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm--2023-10-0812:44:16--https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.......
  • v-model
    1.作用:给表单元素使用,形成双向数据绑定,可以快速获取或设置表单元素内容       ①数据变化,视图自动更新       ②视图变化,数据自动更新2.语法:v-model="data中定义的变量" ......
  • JVM-1
    JVM-1你是否也遇到过这些问题?运行着的线上系统突然卡死,系统无法访问,甚至直接oOM!想解决线上JVMGC问题,但却无从下手。新项目上线,对各种JVM参数设置一脸茫然,直接默认吧,然后就JJ了每次面试之前都要重新背一遍JVM的一些原理概念性的东西,然而面试官却经常问你在实际项目中如......