List和ArrayList这句话是什么意思?

2023-11-29

我正在阅读 Drools Planner 示例,并且经常遇到这样的代码:

List<Column> columnList = new ArrayList<Column>(n);

据我所知,它应该初始化一个长度为 n 的列表,其中存储Column数据类型。


但拥有又有什么关系呢?不同的集合数据类型在表达式的两侧?

If ArrayList<Column>类型匹配List<Column>,它与这样做有何不同:

List<Column> columnList = new List<Column>(n);

List是一个接口。您无法创建接口的实例。

ArrayList是一个实现List的类,您可以创建一个。

接口只是定义行为。实现该行为的类和接口实现该行为。

您会注意到,如果您看一下API,许多不同的类实现List界面。那是因为它们都提供了以下方法的实现:List定义。此外,这些实现可能大多不同,因为和ArrayList工作方式不同于,比方说,LinkedList.

最好使用以下形式

List list = new ListType()

因为如果您愿意,您可以稍后更改列表实现,而不会影响您的代码。这样做的原因是如果你这样做

ListType list = new ListType()

列表的类型是ListType,这只是一个实例ListType和子类有。

如果您执行上面显示的首选分配,那么您可以分配anything实现List to list.

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

List和ArrayList这句话是什么意思? 的相关文章

随机推荐

  • 在C#中,接口可以实例化吗?

    我正在阅读中的代码here 我发现private ITreeModel model 在 TreeList cs 中 namespace Aga Controls Tree public class TreeList ListView reg
  • 通过嵌套字典键对 pandas 数据框进行分组

    我有一个 pandas 数据框 其中一列是字典类型 这是一个示例数据框 import pandas as pd df pd DataFrame a 1 2 3 b 4 5 6 version major 7 minor 1 major 8
  • 递归循环遍历 DOM 树并删除不需要的标签?

    tags array applet gt 1 script gt 1 html file get contents test html dom new DOMdocument dom gt loadHTML html xpath new D
  • 通过常见的键值对组合 JSON

    我目前正在解决一个问题 似乎无法解决这个问题 这是一些数据 以便您了解我在下面所说的内容 foo json Schedule deviceId 123 reservationId 123456 username jdoe deviceId
  • 由于写访问权限,无法使用 Android shell atrace 命令

    如果我尝试atrace工具来自adb壳里emulator atrace atrace error opening sys kernel debug tracing options overwrite No such file or dire
  • 如何创建全局辅助函数?

    我想创建一些全局辅助函数 我知道我必须将它们放在 App Code 中的 cshtml 文件中 我创建了这个文件 helper CreatePostForm string action string controller string id
  • 使用请求登录有问题的站点

    我正在尝试使用 requests 模块在 python 中创建一个脚本来登录到此site 我正在使用我的凭据 但我找不到任何方法来这样做 因为我看不到与请求一起发送所需的参数 在 Chrome 开发工具中 username SIMMTH i
  • 如何使用Maven PDF插件从Surefire Report生成PDF?

    运行 JUnit 测试后 我使用 Maven Surefire Report 插件 http maven apache org plugins maven surefire report plugin 生成 HTML 测试报告 这会产生以下
  • Kubernetes 中的 TCP 入口支持

    似乎 TCP 和 UDP 支持将在下一版本的 ingress nginx 控制器中被弃用 还有其他入口控制器支持 TCP 和 UDP 吗 或任何其他在 kubernetes 之外公开非 http 端口的解决方案 kubernetes 初学者
  • 如何在 Excel 工作表中查找精确值

    如何在 Excel 工作表中找到字符串值 我在尝试objRange Find 但这也给了我错误的地址 例如 我想要 Object paint 的地址 但它也给出 Object paint and stk 的地址 我应该如何获得精确的值 Se
  • Spring boot war文件部署在Tomcat上

    我使用 Spring Boot 1 2 4 RELEASEGS 休息服务源文件 我有 127 0 0 1 18 Jun 2015 09 59 25 0300 GET gs rest service 0 1 0 HTTP 1 1 404 10
  • Mac OS X:_tkinter.TclError:没有显示名称,也没有 $DISPLAY 环境变量

    正如我所说 我已经从 Macports 安装了 Python 3 3 现在 当我重点搜索 空闲 时 Idle Python 3 3 出现 但是 当我尝试单击它时 什么也没有发生 没有显示任何错误或任何东西 它显然不会启动 您认为可能有什么问
  • 为什么要在数据库中创建视图?

    何时以及为何有人决定需要在数据库中创建视图 为什么不直接运行一个普通的存储过程或选择呢 视图提供了多种好处 1 视图可以隐藏复杂性 如果您的查询需要连接多个表 或者具有复杂的逻辑或计算 则可以将所有逻辑编码到视图中 然后像选择表一样从视图中
  • 移动当前可执行文件c#

    我想将当前正在执行的程序集移动到 C 驱动器 当我尝试以下代码时 File Move Assembly GetEntryAssembly Location c 它给了我一个错误 mscorlib dll 中发生 System Unautho
  • Java线程安全数据库连接

    我正在编写一个 servlet 它通过访问和修改数据库中的某些表来处理每个请求 我希望与数据库的连接是线程安全的 我不想为此使用现有的库 框架 spring hibernate 等 我知道我可以通过以下方式使用 java 的 ThreadL
  • 与 multiprocessing.Pool 共享计数器

    我想用multiprocessing Value multiprocessing Lock在不同的进程之间共享一个计数器 例如 import itertools as it import multiprocessing def func x
  • .NET MAUI绑定ListView的ItemSelected事件到ViewModel

    我正在尝试将 ListView 的 ItemSelected 绑定到视图模型 但遇到了一些问题 由于我自己对其工作原理的误解 我有观点
  • Python 和 Ctypes:将结构体作为指针传递给函数以获取数据

    我已经查看了其他答案 但似乎无法使其发挥作用 我正在尝试调用 DLL 中的函数来与 SMBus 设备进行通信 该函数接受一个指向结构的指针 该结构有一个数组作为其字段之一 所以 In C typedef struct SMB REQUEST
  • 托管 Bean 内的回滚事务

    我想不在 EJB 内回滚事务 而是在 JSF 托管 bean 内回滚事务 在EJB内部我们可以使用SessionContext setRollBackOnly 但我可以在托管 bean 中使用什么 Stateless Local Accou
  • List和ArrayList这句话是什么意思?

    我正在阅读 Drools Planner 示例 并且经常遇到这样的代码 List