博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 集合框架 Convenience 实现
阅读量:2391 次
发布时间:2019-05-10

本文共 1269 字,大约阅读时间需要 4 分钟。

本部分描述了一些小型实现,这些实现在您不需要它们的全部功能时,比一般用途的实现更方便、更高效。本节中的所有实现都是通过静态工厂方法而不是公共类提供的。

数组的列表视图

Arrays.asList方法返回数组参数的列表视图。对列表的更改将写入到数组,反之亦然。集合的大小是数组的大小,不能更改。如果在列表上做添加或删除,将会返回UnsupportedOperationException。

这个实现的正常使用是基于arraybased和基于集合的api之间的桥梁。它允许您将数组传递给期望一个集合或列表的方法。然而,这个实现还有另一个用途。如果您需要一个固定大小的列表,那么它比任何通用的列表实现都要高效。这是成语。

List
list = Arrays.asList(new String[size]);

注意,不保留对支持数组的引用。

不可变的多重副本列表

有时您需要一个不可变的列表,其中包含相同元素的多个副本的集合。ncopy方法返回这样的列表。这个实现有两个主要用途。第一个是初始化一个新创建的列表; 例如,假设您希望一个ArrayList最初包含1,000个空元素。下面的这样写可以奏效。

List
list = new ArrayList
(Collections.nCopies(1000, (Type)null);

当然,每个元素的初始值不需要为空。第二个主要用途是扩展现有的列表。例如,假设您想要将字符串“fruit bat”的69个副本添加到列表的末尾< string >。不清楚你为什么想做这样的事,但我们假设你做了。以下是你的做法。

lovablePets.addAll(Collections.nCopies(69, "fruit bat"));

通过使用包含索引和集合的addAll的形式,您可以将新元素添加到列表的中间,而不是在列表的末尾。

不可变的单集

有时您需要一个不可变的单例集,它由一个单一的指定元素组成。的集合。singleton方法返回这样的集合。这个实现的一个用途是删除集合中指定元素的所有出现。

c.removeAll(Collections.singleton(e));

一个相关的习语从地图中删除映射到指定值的所有元素。举个例子,假设你有一个地图-工作-把人们映射到他们的工作线上,假设你想要消除所有的律师。下面一行人将做这件事。

job.values().removeAll(Collections.singleton(律师));

这个实现的另一个用途是向用于接收值集合的方法提供一个单一的输入值。

空集、列表和映射常量。

集合类提供了返回空集、列表和映射的方法——emptySet、emptyList和emptyMap。这些常量的主要用途是作为方法的输入,当您不想提供任何值时,这些方法会收集值,就像在本例中那样。

tourist.declarePurchases(Collections.emptySet());

转载地址:http://ceqab.baihongyu.com/

你可能感兴趣的文章
Building an Ionic OCR App with Tesseract
查看>>
Spring boot with Apache Hive
查看>>
使用awr来诊断数据库性能问题
查看>>
exp-00056 exp-00000 导出终止失败的处理
查看>>
Linux中两块device的minor number相同而造成RAC不能启动的问题
查看>>
DM7修改数据库参数
查看>>
Oracle ASM Partnership and Status Table
查看>>
Oracle 12CR2 Oracle Restart - ASM Startup fails with PRCR-1079
查看>>
In-Memory Column Store
查看>>
Oracle 12C ASM asmcmd amdu_extract
查看>>
Oracle AMDU- ASM Metadata Dump Utility
查看>>
C/C++程序中的profile
查看>>
一个更好的Post process结构,三角形代替四边形。
查看>>
利用Vertex shader实现Point Sprites
查看>>
图形处理器历史简介
查看>>
System Memory,AGP Memory and Video Memory in D3D.
查看>>
使用辅助库建立openGL编程环境
查看>>
使用Win32API开始openGL编程
查看>>
使用MFC开始openGL编程
查看>>
关于Gbuffer中的normal存储
查看>>