当前位置: 首页 > news >正文

java21学习笔记-序列集合

引入新的接口来表示具有定义的相遇顺序的集合。每个这样的集合都有一个明确定义的第一个元素、第二个元素,依此类推,直到最后一个元素。它还提供统一的 API 来访问其第一个和最后一个元素,并以相反的顺序处理其元素。

Sequenced collections

interface SequencedCollection<E> extends Collection<E> {// new methodSequencedCollection<E> reversed();// methods promoted from Dequevoid addFirst(E);void addLast(E);E getFirst();E getLast();E removeFirst();E removeLast();
}
        List<String> list = new ArrayList<>();list.add("1");        list.add("4");list.add("6");        list.add("2");list.add("9");        list.add("3");System.out.println(list.getFirst());    //1System.out.println(list.getLast());     //3System.out.println(list.removeFirst()); //1System.out.println(list);               //[4, 6, 2, 9, 3]System.out.println(list.removeLast());  //3System.out.println(list);               //[4, 6, 2, 9]     list.addFirst("6");System.out.println(list);               //[6, 4, 6, 2, 9]System.out.println(list.reversed());    //[9, 2, 6, 4, 6]

Sequenced sets

interface SequencedSet<E> extends Set<E>, SequencedCollection<E> {SequencedSet<E> reversed();    // covariant override
}
        LinkedHashSet<String> set = new LinkedHashSet<>();set.add("1");        set.add("5");set.add("9");        set.add("2");set.add("4");        set.add("7");Set<String> collect = new HashSet<>(set);System.out.println(collect);        //[1, 2, 4, 5, 7, 9]LinkedHashSet<String> set1 = new LinkedHashSet<>(collect);System.out.println(set1.reversed());//[9, 7, 5, 4, 2, 1]

Sequenced maps

interface SequencedMap<K,V> extends Map<K,V> {// new methodsSequencedMap<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 NavigableMapEntry<K, V> firstEntry();Entry<K, V> lastEntry();Entry<K, V> pollFirstEntry();Entry<K, V> pollLastEntry();
}
        SequencedMap<String, String> map = new LinkedHashMap<>();map.put("name", "张三");              map.put("age", "18");map.put("nickname", "法外狂徒");       map.put("sex", "男");System.out.println(map);                //{name=张三, age=18, nickname=法外狂徒, sex=男}System.out.println(map.reversed());     //{sex=男, nickname=法外狂徒, age=18, name=张三}SequencedSet<String> sequencedKeySet = map.sequencedKeySet();System.out.println(sequencedKeySet);    //[name, age, nickname, sex]SequencedCollection<String> sequencedValues = map.sequencedValues();System.out.println(sequencedValues);    //[张三, 18, 法外狂徒, 男]SequencedSet<Map.Entry<String,String>> sequencedEntrySet = map.sequencedEntrySet();System.out.println(sequencedEntrySet);  //[name=张三, age=18, nickname=法外狂徒, sex=男]map.putFirst("first","first");System.out.println(map);                //{first=first, name=张三, age=18, nickname=法外狂徒, sex=男}map.putLast("last","last");System.out.println(map);                //{first=first, name=张三, age=18, nickname=法外狂徒, sex=男, last=last}System.out.println(map.firstEntry());   //first=firstSystem.out.println(map.lastEntry());    //last=lastSystem.out.println(map.pollFirstEntry());//first=firstSystem.out.println(map);                //{name=张三, age=18, nickname=法外狂徒, sex=男, last=last}System.out.println(map.pollLastEntry());//last=lastSystem.out.println(map);                //{name=张三, age=18, nickname=法外狂徒, sex=男}

改造

上面定义的三个新接口完全适合现有的集合类型层次结构

List 现在将 SequencedCollection 作为其直接超接口

Deque 现在将 SequencedCollection 作为其直接的超级接口

LinkedHashSet 还实现了 SequencedSet

SortedSet 现在将 SequencedSet 作为其直接超接口

LinkedHashMap 还实现了 SequencedMap

SortedMap 现在将 SequencedMap 作为其直接的超级接口

 Collections 实用程序类添加了新方法,为三种新类型创建不可修改的包装器

Collections.unmodifiableSequencedCollection(sequencedCollection)

Collections.unmodifiableSequencedSet(sequencedSet)

Collections.unmodifiableSequencedMap(sequencedMap)

       var unmodifiableSequencedCollection = Collections.unmodifiableSequencedCollection(sequencedValues);System.out.println(unmodifiableSequencedCollection);    //[张三, 18, 法外狂徒, 男]var unmodifiableSequencedSet = Collections.unmodifiableSequencedSet(sequencedEntrySet);System.out.println(unmodifiableSequencedSet);           //[name=张三, age=18, nickname=法外狂徒, sex=男]var unmodifiableSequencedMap =  Collections.unmodifiableSequencedMap(map.reversed());System.out.println(unmodifiableSequencedMap);           //{sex=男, nickname=法外狂徒, age=18, name=张三}


文章转载自:

http://qpKnU1W0.dkmwp.cn
http://pAss2tXA.dkmwp.cn
http://PT5py5b4.dkmwp.cn
http://6hcf5ae6.dkmwp.cn
http://9sLm9tJt.dkmwp.cn
http://p35uLe4y.dkmwp.cn
http://ZQVSHiEM.dkmwp.cn
http://Kmz9jyMe.dkmwp.cn
http://wxdysrOH.dkmwp.cn
http://GKeUHBJl.dkmwp.cn
http://7TVGICfc.dkmwp.cn
http://cj4LAafu.dkmwp.cn
http://2dePaxFE.dkmwp.cn
http://4bSLIo1g.dkmwp.cn
http://VZ78Prlo.dkmwp.cn
http://sZ6vKKmO.dkmwp.cn
http://xDEbWKFN.dkmwp.cn
http://rHh3rctK.dkmwp.cn
http://FgLaAc8h.dkmwp.cn
http://5rINR1TU.dkmwp.cn
http://TDNkqlsP.dkmwp.cn
http://kmVjnHWN.dkmwp.cn
http://v1NZGgCT.dkmwp.cn
http://MLCLcYaM.dkmwp.cn
http://RDMp8SVE.dkmwp.cn
http://E94lShDX.dkmwp.cn
http://aQAOIHI3.dkmwp.cn
http://Dhufs0ft.dkmwp.cn
http://MOTwErs7.dkmwp.cn
http://2GDkdTok.dkmwp.cn
http://www.dtcms.com/a/386213.html

相关文章:

  • Class57 代码实现
  • torch.gather
  • 自学嵌入式第四十二天:单片机-定时器和UART串口
  • 大数据毕业设计选题推荐-基于大数据的旅游网站用户行为数据分析系统-Hadoop-Spark-数据可视化-BigData
  • 深入浅出数据结构:队列(Queue)—— 生活中的排队艺术
  • spring通过Spring Integration实现udp通信
  • Linux内存管理章节十八:内核开发者的武器库:内存分配API实战指南
  • CAD如何输出PDF多页文件
  • 我对 WPF 动摇时的选择:.NET Framework 4.6.2+WPF+Islands+UWP+CompostionApi
  • 1.整流-滤波电路的缺点和PFC的引入
  • QT 项目 线程信号切换 举例
  • 构网型5MW中压储能变流升压一体机技术方案
  • 【数据工程】8. SQL 入门教程
  • C++---前向声明
  • 在Qt项目中使用QtConcurrent::run,实现异步等待和同步调用
  • 经验分享只靠口头传递会带来哪些问题
  • Linux底层-内核数据接口:/proc
  • PEFT+DeepSpeed 1 (微调 分布式 显存优化)
  • Spring Boot 下 Druid 连接池:多维度优化打造卓越性能
  • 提升学术研究能力:从开题构思难题到AI辅助提纲生成
  • spring-kafka的消息拦截器RecordInterceptor
  • VSCode + Python 开发踩坑:虚拟环境不在项目根目录导致包无法识别该怎么办
  • 【MCP】【FastMCP】[特殊字符] 使用 UV 创建 FastMCP 服务完整示例
  • 蓝绿部署(Blue-Green Deployment)介绍(一种用于降低软件发布风险的部署策略)流量切换(金丝雀发布)
  • 羽毛球地板:从专业运动场景到全民健身市场的技术跃迁与产业重构
  • 【实战】预警算法--噪声添加机制
  • Three.js 中如何给 3D 模型添加文字标签?
  • 贪心算法应用:NFV功能部署问题详解
  • 第八章:Jmeter 非GUl命令详解
  • 知识点17:多Agent系统架构设计模式