传递零大小的数组,保存分配?

2024-03-28

在此代码示例中,第 114 页基础扎实的 Java 开发人员 https://rads.stackoverflow.com/amzn/click/com/1617290068,最后一行:

Update[] updates = lu.toArray(new Update[0]);

包含注释:传递零大小的数组,保存分配

List<Update> lu = new ArrayList<Update>();
String text = "";
final Update.Builder ub = new Update.Builder();
final Author a = new Author("Tallulah");

for (int i=0; i<256; i++) {
  text = text + "X";
  long now = System.currentTimeMillis();
  lu.add(ub.author(a).updateText(text).createTime(now).build());
  try {
    Thread.sleep(1);
  } catch (InterruptedException e) {
  }
}

Collections.shuffle(lu);
Update[] updates = lu.toArray(new Update[0]);

这笔节省到底是什么分配?

javadoc 为列表#toArray(T[] a) http://docs.oracle.com/javase/7/docs/api/java/util/List.html#toArray%28T%5B%5D%29提到:

如果列表适合指定的数组,则将其返回其中。 否则,将使用运行时类型分配一个新数组 指定的数组和该列表的大小。

我记得的是:如果你传递给的数组toArray(T[] a)无法容纳列表中的所有内容,因此会分配一个新数组。简单来说,列表中有 256 个元素,无法放入大小为 0 的数组,因此必须在方法内部分配一个新数组,对吧?

那么这个注释是错误的吗?或者还有什么别的意思吗?


简单来说,列表中有 256 个元素,无法放入大小为 0 的数组,因此必须在方法内部分配一个新数组,对吧?

yes.


您可以使用

 private static final Update NO_UPDATES = { }

 lu.toArray(NO_UPDATES);

然而,只有当您期望列表的长度通常为 0 时,这才会有帮助。

一般来说,我会采用与 fge 相同的方法

 lu.toArray(new Update[lu.size()]);

根据您的具体情况,您可以提前知道尺寸,这样您就可以这样做

Update[] updates = new Update[256];
String text = "";
final Update.Builder ub = new Update.Builder();
final Author a = new Author("Tallulah");

long now = System.currentTimeMillis();
for (int i=0; i<updates.length; i++) 
  updates[i] = ub.author(a).updateText(text += 'X').createTime(now++).build();

Collections.shuffle(Arrays.asList(updates));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

传递零大小的数组,保存分配? 的相关文章

  • Java中反射是如何实现的?

    Java 7 语言规范很早就指出 本规范没有详细描述反射 我只是想知道 反射在Java中是如何实现的 我不是问它是如何使用的 我知道可能没有我正在寻找的具体答案 但任何信息将不胜感激 我在 Stackoverflow 上发现了这个 关于 C
  • Play框架运行应用程序问题

    每当我尝试运行使用以下命令创建的新 Web 应用程序时 我都会收到以下错误Play http www playframework org Error occurred during initialization of VM Could no
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • Final字段的线程安全

    假设我有一个 JavaBeanUser这是从另一个线程更新的 如下所示 public class A private final User user public A User user this user user public void
  • Android:捕获的图像未显示在图库中(媒体扫描仪意图不起作用)

    我遇到以下问题 我正在开发一个应用程序 用户可以在其中拍照 附加到帖子中 并将图片保存到外部存储中 我希望这张照片也显示在图片库中 并且我正在使用媒体扫描仪意图 但它似乎不起作用 我在编写代码时遵循官方的Android开发人员指南 所以我不
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • Liferay ClassNotFoundException:DLFileEntryImpl

    在我的 6 1 0 Portal 实例上 带有使用 ServiceBuilder 和 DL Api 的 6 1 0 SDK Portlet 这一行 DynamicQuery query DynamicQueryFactoryUtil for
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 禁止的软件包名称:java

    我尝试从数据库名称为 jaane 用户名 Hello 和密码 hello 获取数据 错误 java lang SecurityException Prohibited package name java at java lang Class
  • 使用Caliper时如何指定命令行?

    我发现 Google 的微型基准测试项目 Caliper 非常有趣 但文档仍然 除了一些示例 完全不存在 我有两种不同的情况 需要影响 JVM Caliper 启动的命令行 我需要设置一些固定 最好在几个固定值之间交替 D 参数 我需要指定
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • 有没有办法为Java的字符集名称添加别名

    我收到一个异常 埋藏在第 3 方库中 消息如下 java io UnsupportedEncodingException BIG 5 我认为发生这种情况是因为 Java 没有定义这个名称java nio charset Charset Ch
  • java.lang.IllegalStateException:驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置 - Similiar 不回答

    尝试学习 Selenium 我打开了类似的问题 但似乎没有任何帮助 我的代码 package seleniumPractice import org openqa selenium WebDriver import org openqa s

随机推荐

  • 串行版本 UID 有何用途? [复制]

    这个问题在这里已经有答案了 我正在创建一个 Java 应用程序 当创建一个与 ADT 一起使用的接口时 它发现需要将一个随机数初始化为 ID 号 public class StackFullException extends Runtime
  • DomIcon 的集群

    我正在尝试制作集群H map DomMarker 正在使用H map DomIcon与 HTML 代码 但原生的 Here Map 聚类不起作用 仅当我使用简单的H map Icon 但由于这被渲染为canvas图层 我无法使用自己的标记
  • MFC:如何捕获Web浏览器控件中的链接单击事件?

    我有一个带有 Web 控件的 MFC 应用程序 单击可单击链接时 它将使用 IE 打开 而不是默认浏览器 问题 有没有办法强制使用默认浏览器打开它 如果没有 我如何捕获链接单击事件 以便稍后可以操纵单击事件 谢谢 不 据我所知还没有 查看有
  • 在 Mathematica 中导入 Google Sketchup 模型

    Google 的 Sketchup 是一个漂亮 简单的 3D 对象建模器 此外 谷歌还拥有巨大的3D 对象仓库 http sketchup google com 3dwarehouse 因此 如果您在这方面不是特别有天赋 实际上您不必自己做
  • R 包“partykit”在 ctree_control 中未使用参数

    我想使用 partykit 包通过 ctree 和 cforest 构建分类树和森林 由于我的数据集包含 50000 行和 30 列 因此我想将 minsplit 设置为 150 将 minbucket 设置为 50 不幸的是 当我输入我的
  • 与 xgboost 并行线程?

    根据其文档 xgboost 有一个 n jobs 参数 但是 当我尝试设置 n jobs 时 出现此错误 TypeError init got an unexpected keyword argument n jobs 其他一些参数 如 r
  • OpenSSL 错误 - 无法获取本地颁发者证书

    我有一个简单的链设置 在这种情况下可以成功验证 openssl version OpenSSL 1 0 2m 2 Nov 2017 openssl verify CAfile chain pem cert pem cert pem OK 但
  • ember 数据验证的标准模式是什么? (无效状态,变成无效……)

    我已经为此苦苦挣扎了一段时间 让我们看看是否有人可以帮助我 尽管自述文件中没有明确说明 但 ember data 提供了一定程度的验证支持 您可以在代码和文档的某些部分看到 https github com emberjs data blo
  • 查找堆中元素的位置

    考虑以下元素列表 h 38 203 1 45 39 10 34 90 10 2 100 1 如果将其放入基于数组的堆中 它将按以下方式查找 import heapq heapq heapify h now we have a heap th
  • 如何使用 Javascript 在离开页面之前调用函数

    我想在离开页面之前执行一个函数 而不显示确认弹出窗口JavaScript仅有的 我已尝试使用下面的代码 但它不起作用或与onbeforeunload但它总是显示弹出窗口 var result test if window onbeforeu
  • 混合 C++11 std::thread 和 C 系统线程(即 pthreads)

    我正在编写一个多线程 C 程序 并希望使用多线程 C 库 该库希望我使用本机系统方法为其创建一些工作线程 并使用如下代码将控制权传递给其 run 函数 void system specific thread init ifdef WIN32
  • cpprestsdk:架构 x86_64 的未定义符号

    我已经访问了所有其他问题 但据我所知 没有一个问题是我的问题 在 MacBook Pro 16GB 内存 Intel Core I7 上运行 OS X El Capitan 10 11 6 我也运行过brew doctor 但没有发现任何会
  • ui-bootstrap 分页在初始化时重置当前页面

    我正在使用 ui bootstrap angular bootstrap 库中的分页指令 我在初始化时遇到问题 当我通过 url 导航到特定页面时 会出现问题 发生的情况是 我的控制器使用 stateParams 中的正确页面进行初始化 然
  • 如何在跨度内的 CSS 中创建所有浏览器兼容的悬挂缩进样式

    我唯一发现的是 hang text indent 3em margin left 3em 实现此目的的唯一方法是将文本放入段落中 这会导致那些非常难看的额外行 我宁愿把它们放在一个 span class hang span 类型的事物 我还
  • 使用 Karma / Jasmine 进行 Angular 8 测试 -> 角度路由中的 loadChildren 未覆盖 100% 代码覆盖率

    从 Angular 7 升级到 Angular 8 后 应用程序路由的 loadChildren 发生了重大变化 当这些问题得到修复并且所有测试都在运行时 我不再获得 100 的代码覆盖率 因为 loadChildren 不再是 字符串 而
  • 直接调用 vs 调用 vs 启动

    我在使用 Tivoli Workload Scheduler 运行批处理文件时遇到此问题 有一个第三方程序 假设它的名称是program exe 该批处理文件包含以下命令来调用program exe program exe param1 p
  • 多个力布局图,其中 d3 位于单独的 svg/div 中

    我在使用 d3 创建多个力布局图并从 json 文件读取数据时遇到问题 我使用 for 循环来迭代图表 为每个图表创建一个单独的 div 其中包含一个 svg 问题是 力布局仅应用于最后创建的布局 因此基本上其他布局仅在左上角显示一个点 我
  • UICollectionView 上的 register(_:forCellWithReuseIdentifier:) 有什么问题?

    我正在与一个UICollectionView As dequeueReusableCell withReuseIdentifier for 期望您必须使用以下方法注册类或 nib 文件register forCellWithReuseIde
  • 以极高的速度获取行

    我在 Oracle 中有一个非常大的表 数亿行 包含数字和字符串 我需要读取该表的所有内容 对其进行格式化并写入文件或任何其他资源 一般来说 我的解决方案如下所示 package my odp import java io Buffered
  • 传递零大小的数组,保存分配?

    在此代码示例中 第 114 页基础扎实的 Java 开发人员 https rads stackoverflow com amzn click com 1617290068 最后一行 Update updates lu toArray new