在 Java 中将列表复制回数组以及反之亦然的时间复杂度是多少?

2023-11-22

我想知道时间复杂度是多少 [in bigO(n)的符号]ArrayList to Array转换:

ArrayList assetTradingList = new ArrayList();
assetTradingList.add("Stocks trading");
assetTradingList.add("futures and option trading");
assetTradingList.add("electronic trading");
assetTradingList.add("forex trading");
assetTradingList.add("gold trading");
assetTradingList.add("fixed income bond trading");
String [] assetTradingArray = new String[assetTradingList.size()];
assetTradingArray.toArray(assetTradingArray);

同样,按以下方式列出数组的时间复杂度是多少:

方法1使用Arrays.asList:

String[] asset = {"equity", "stocks", "gold", "foreign exchange","fixed
    income", "futures", "options"};
List assetList = Arrays.asList(asset);

方法2使用collections.addAll:

    List assetList = new ArrayList();
    String[] asset = {"equity", "stocks", "gold", "foreign exchange", "fixed
        income", "futures", "options"};
    Collections.addAll(assetList, asset);

方法3addAll:

     ArrayList newAssetList = new ArrayList();
     newAssetList.addAll(Arrays.asList(asset));

我对来回复制的开销感兴趣的原因是因为在典型的面试中,会出现以下问题given an array of pre-order traversal elements, convert to binary search tree等等,涉及arrays. With List提供一整套操作,例如remove等等,这将使使用代码变得简单List than Array.

在这种情况下,我想为我使用list代替arrays说“我首先将数组转换为列表,因为这个操作的开销并不大(希望如此)”。

建议来回复制元素的任何更好的方法array to list那会更快也很好。

Thanks


看来Arrays.asList(T[]);是最快的O(1)

因为该方法返回一个不可修改的List,没有理由将引用复制到新的数据结构。该方法只是使用给定的数组作为不可修改的支持数组List它返回的实现。

其他方法似乎将每个元素逐一复制到底层数据结构。ArrayList#toArray(..) uses System.arraycopy(..)内心深处(O(n)但速度更快,因为它是本地完成的)。Collections.addAll(..)循环遍历数组元素 (O(n)).


使用时要小心ArrayList。当达到其容量时,后备阵列的大小会加倍,即。当它满了的时候。这需要O(n)时间。添加到ArrayList除非您知道从一开始就添加了多少元素并以该大小创建它,否则可能不是最好的主意。

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

在 Java 中将列表复制回数组以及反之亦然的时间复杂度是多少? 的相关文章

  • 使用正则表达式验证输入字符串是否为 0-255 之间的数字

    我在将输入字符串与正则表达式匹配时遇到问题 我想验证输入数字在 0 255 之间并且长度最多应为 3 个字符 代码工作正常 但当我输入 000000 至任意长度时 显示 true 而不是 false 这是我的代码 String IP 000
  • 帮助我避免 JPA、Hibernate 和 MySQL 的连接超时

    我正在使用 JPA Hibernate 作为提供者 Glassfish 和 MySQL 开发中一切都运行良好 但是当我将应用程序部署到测试服务器并让它运行 大部分空闲 过夜时 我通常会在早上遇到这样的情况 2011 03 09T15 06
  • 如何连接 R 列表中的多个 .wav 文件?

    我有一个 wav 文件列表my list library seewave library tuneR data tico audio lt tico freq lt 22050 breaks lt c 0 0 2 0 4 0 6 0 8 i
  • 如何将抽象工厂与单例模式结合起来? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在用 java 编码 并且对这些模式很陌生 谁能给我一个也使用单例的工厂抽象的例子 这是一个实现类的示例单例模式 这个实现也是线程安全
  • ResultSet:通过索引检索列值与通过标签检索

    使用 JDBC 时 我经常遇到这样的结构 ResultSet rs ps executeQuery while rs next int id rs getInt 1 Some other actions 我问自己 以及代码作者 为什么不使用
  • Active MQ - HelloWorld 示例异常

    我正在尝试运行 hello world 示例在这里找到 http activemq apache org hello world html I added activemq all 5 5 1 jar已经到图书馆了 它构建成功 但出现以下警
  • EL 通过 Scriptlet

    在 JSP 中使用 EL 相对于 scriptlet 的优势是什么 EL 被认为是无脚本语言 EL 使 JSP 免受容易出错原始 Java 代码并强制您根据 MVC 思想编写 JSP EL 或像 JSTL 这样的标签库 不可能实现的任何事情
  • 从字符串生成密钥?

    我需要从字符串生成一个密钥 以便我始终可以从同一字符串创建相同的密钥 具体来说是一个Key对象 这样我就可以用它来创建Cipher进而创建SealedObject 这在 Java 中可行吗 我应该考虑什么类 方法组合才能做到这一点 对于 A
  • c和java语言中的换行符

    现在行分隔符取决于系统 但在 C 程序中我使用 n 作为行分隔符 无论我在 Windows 还是 Linux 中运行它都可以正常工作 为什么 在java中 我们必须使用 n 因为它与系统相关 那么为什么我们在c中使用 n 作为新行 而不管我
  • 我需要一个字数统计程序[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我需要弄清
  • org.apache.commons.codec.digest.Md5Crypt.md5Crypt 函数。 linux下出现异常,windows下正常

    我们正在使用commons codec加密密码 使用org apache commons codec digest Md5Crypt md5Crypt功能 在Windows环境下工作正常 但在CentOS上却抛出异常 我们有3台centOS
  • 为什么我要使用责任链而不是 switch 语句

    考虑一下您已经获得了多次验证 仅当要检查的对象属于某种类型时 这些验证才应生效 为什么我要使用责任链而不是 switch 语句 责任链示例 public class Executor Inject private ValidatorFact
  • Perl 中令人困惑的文件句柄

    一直在使用以下脚本 但仍然无法理解两种不同 类型 的文件句柄形式背后的含义 任何见解将不胜感激 usr bin perl use warnings use strict open FH example txt or die while
  • Java 不可变对象 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在学习不变性的概念 据我了解 一旦创建对象 不可变对象就无法更改其值 但我不明白不可变对象的以下用途 They are 自动是线程
  • Java LRU 缓存使用 LinkedList

    堆栈溢出的新手 所以请不要介意我以菜鸟的方式问这个问题 我正在尝试使用链表实现 LRU 缓存 我在这里看到了使用 linkedHashMap 和其他数据结构的其他实现 但对于这种情况 我正在尝试使用链表创建最佳优化版本 正如我在技术期间被问
  • Java 验证日期为 yyyyMMddHHmmss

    我想在java中验证给定的日期格式为yyyyMMddHHmmss 状况 应符合格式 yyyyMMddHHmmss 它应该验证当前日期 它应该验证与当前小时有 3 小时或 3 小时差异的小时数 如果满足所有三个条件 Java 方法应返回 tr
  • while 之后无法访问的语句[重复]

    这个问题在这里已经有答案了 我只是修改代码 在以下代码中出现错误 int x 1 System out println x x while true x System out println x x 错误在最后一行 我可以知道错误 错误 无
  • 如何在 Log4j2 - JSON 布局中自定义或删除默认属性

    In Spring Boot 2我已配置的应用程序Log4j2 with JsonLayout像下面这样
  • 在没有EOF的情况下停止读取java中的输入

    In 问题 如何停止读取输入 我的程序继续运行 要求更多输入 public static void main String args throws Exception BufferedReader br new BufferedReader
  • 使用 PDFBox 在 Android 中创建 PDF

    我正在尝试通过我的 Android 应用程序创建 PDFPDFBoxapi 但出现以下错误 java lang NoClassDefFoundError org apache pdfbox pdmodel PDDocument 我已经将以下

随机推荐

  • 停止从 IIS 7.5 中的父 ASP.NET 应用程序继承 web.config

    我们在 IIS 7 5 中部署了 ASP NET 网站 应用程序 1 然后在该应用程序下创建另一个 ASP NET 应用程序 应用程序 2 但在App 2中 我不想继承web config来自应用程序 1 如果我尝试在 App 1 中执行以
  • 有没有办法以编程方式关闭 WPF 中的菜单项

    我在 wpf 中有一个菜单 上面有一个输入框和一个按钮 一旦用户单击按钮 我需要关闭菜单 有没有办法做到这一点 menu menu
  • C++中的非静态函数可以修改静态变量吗

    C 中的非静态函数可以修改静态变量吗 是的 只要数据成员的可见性允许 非静态成员函数就可以修改静态数据成员
  • 运行 tweepy 的 Airflow 任务退出并返回代码 -6

    我有一个简单的 Airflow DAG 它只有一个任务 stream from twitter to kafka 以下是 DAG 的代码 default args owner me depends on past False start d
  • 如何知道适合固定大小的 UILabel 的 NSString 长度?

    我知道 NSString 有确定其帧大小的方法 使用 NSString UIKit Additions sizeWithFont 反过来又如何呢 我的意思是 如果我有固定的框架大小 我如何知道 NSString 可以容纳多少个字符或单词 如
  • Pods 依赖项的 Xcode 10 多个命令构建错误

    Multiple commands produce Users abc Library Developer Xcode DerivedData MyProject cworwzaxajsmfkcfvourofovbggd Build Pro
  • 错误:静态成员函数中的成员使用无效

    我有两个类 这是其中一个类的标题 ifndef WRAPPER HPP define WRAPPER HPP include
  • 跳过调试器中的当前行

    有没有办法使用键盘快捷键跳过 Visual Studio 调试器中的当前行 我能够做到这一点的唯一方法是使用左侧的黄色光标或 设置下一个语句 这在函数末尾不起作用 设置下一条语句 CTRL SHIFT F10 快捷方式将在函数末尾起作用 但
  • 谷歌地图与离子

    我正在尝试使用 google 地图和 Ionic 来实现地图 我按照这个编码Link但我得到的只是一个空白屏幕 不知道哪里出了问题 请帮忙 这是控制器 angular module starter ionic controller MapC
  • 如何从日期时间创建日期(使用 lubridate)?

    假设我创建了一个包含日期和时间的变量 a lt ymd hms 2014 01 01 12 23 34 如何创建另一个只有日期的变量 也就是我应该怎么做才能转型a的值等于b的值在哪里b is b lt ymd 2014 01 01 你可以只
  • 如何在按下返回键时快速隐藏键盘?

    I am using UITextfied while clicking on textfied keyboard appear but when i pressed the return key keyboard is not disap
  • password_hash、password_verify、MySQL的误解?

    我似乎无法让这个测试显示数据库中的哈希密码 它可以很好地显示表单中的密码 尝试进行此测试以找出为什么我无法将表单中的密码与数据库中存储的密码进行比较来验证密码 我读到了一些关于转义哈希中的 符号的内容 但我不确定如何使用我正在使用的代码来做
  • locale什么时候影响R的正则表达式?

    R 有几个用于正则表达式的特殊的与语言环境无关的字符类 From regex alnum 表示 0 9A Za z 后者除外 取决于区域设置和字符编码 而 前者独立于区域设置和字符集 我想知道何时会出现特定于区域设置的问题 我根据中的信息尝
  • Powerpoint:手动设置幻灯片名称

    Context C 中的 PowerPoint 幻灯片有一个属性 Slide Name 通常包含任意字符串值 在我的 C 应用程序中 我想使用此属性来识别幻灯片 幻灯片顺序不可靠 问题 如何在 PowerPoint 应用程序中手动设置 Sl
  • 免费网络监控器

    我在集成两种产品时遇到问题 其中一种是我的 但它们似乎没有说话 所以我想确保他们的沟通正确 我查看了网络监视器并发现了 TCP Spy 这有效 但一次只显示对话的一侧 它必须在本地运行 我理想情况下希望同时看到双方 但你不能运行 TCP S
  • 在 Ruby 中实现同步屏障

    我正在尝试 复制 CUDA 的行为 synchtreads Ruby 中的函数 具体来说 我有一组N需要执行某些代码的线程 然后在继续执行其余业务之前 所有线程都在执行中点互相等待 例如 x 0 a Thread new do x 1 sy
  • wait_fences:未能收到回复:10004003 - 什么?

    一直收到这个奇怪的错误 事情是这样的 在下面的方法中 我会出现一个警报视图 获取 U N 和 PW 然后尝试启动另一个方法 方法 postTweet 没有被激活 我刚刚在控制台中收到此错误 wait fences failed to rec
  • 如何在不使用 as 的情况下确保 TypeScript string|string[] 是字符串?

    edit由于时间的推移 这个问题从对此的评论和回答看来 它已经失去了有效性 尽管最初出现 但它并不是这个的骗局 我有一个翻译功能 通过以下签名工作 getI18n id string string 我注意到输入以下内容有点乏味 const
  • 从文本视图中删除粗体而不更改其他属性

    I use setTypeface设置文本粗体 或斜体 或其他字体属性 TextView tv findViewById R id label tv setTypeface null Typeface BOLD 如何仅删除粗体属性 而不更改
  • 在 Java 中将列表复制回数组以及反之亦然的时间复杂度是多少?

    我想知道时间复杂度是多少 in bigO n 的符号 ArrayList to Array转换 ArrayList assetTradingList new ArrayList assetTradingList add Stocks tra