声明 Array List 的3种方式 ArrayList、Collection、List 的区别

ArrayList 是一个实现了 List 接口的类,而 ListCollection 都是Java集合框架中的接口。

这三个声明之间有一些重要的区别:

  1. ArrayList list = new ArrayList();
    这是一个原始类型的声明,意味着没有使用泛型。
    这样的声明允许你在 list 中添加任何类型的对象,这可能会导致运行时错误(例如,当你尝试从列表中检索特定类型的对象时)。
    在现代Java编程中,通常不推荐使用原始类型的集合,因为它们不提供类型安全。

  2. Collection list = new ArrayList();
    这里,你声明了一个 Collection 类型的变量 list 并将其初始化为一个 ArrayList 的实例。
    尽管这是合法的,但通常不推荐这样做,
    因为 Collection 接口提供的操作比 List 接口少。当你使用 Collection 类型时,你失去了 List 提供的特定方法,如 get(int index)add(int index, E element)

  3. List list = new ArrayList();
    这是一个使用原始类型的 List 接口的声明。
    尽管它允许你添加任何类型的对象,但与第一个声明相比,它提供了更多的类型安全,
    因为你可以将 list 转换为具体的 List 类型(例如 List<String>)。
    然而,为了获得最大的类型安全性,你应该使用泛型:List<String> list = new ArrayList<>();
    在这个声明中,list 是一个只能包含 String 类型对象的 List

总结:

  • 使用原始类型的集合(如 ArrayList list = new ArrayList();)是不推荐的,因为它们不提供类型安全。
  • 使用 Collection 类型(如 Collection list = new ArrayList();)可能会限制你访问 List 接口提供的特定方法。
  • 使用泛型的 List 接口(如 List<String> list = new ArrayList<>();)是最佳做法,因为它提供了类型安全并允许你访问 List 接口的所有方法。

相关推荐

  1. ArrayList<Integer>()转为int[]方式

    2024-03-09 23:04:03       43 阅读
  2. ArrayList和LinkedList区别

    2024-03-09 23:04:03       54 阅读
  3. ArrayList 和 LinkedList 区别

    2024-03-09 23:04:03       38 阅读
  4. ArrayLIst和linkedlist区别

    2024-03-09 23:04:03       50 阅读
  5. ArrayList与LinkedList区别

    2024-03-09 23:04:03       51 阅读
  6. ArrayList和LinkedList区别

    2024-03-09 23:04:03       37 阅读
  7. ArrayList与LinkedList区别

    2024-03-09 23:04:03       34 阅读
  8. ArrayList和LinkedList区别

    2024-03-09 23:04:03       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-09 23:04:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-09 23:04:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-09 23:04:03       87 阅读
  4. Python语言-面向对象

    2024-03-09 23:04:03       96 阅读

热门阅读

  1. Spring MVC PathVariableMethodArgumentResolver原理解析

    2024-03-09 23:04:03       51 阅读
  2. 【Spring Boot 3】动态注入和移除Bean

    2024-03-09 23:04:03       48 阅读
  3. 基于USDT的日志优化

    2024-03-09 23:04:03       46 阅读
  4. 每月AI科研动向(2024年2月)

    2024-03-09 23:04:03       35 阅读
  5. Hive分组排序取topN的sql查询示例

    2024-03-09 23:04:03       42 阅读
  6. iOS OC与Swift文件相互调用

    2024-03-09 23:04:03       61 阅读
  7. angular17+ionic7集成开发

    2024-03-09 23:04:03       42 阅读
  8. 【AIGC调研系列】Claude 3调研分析

    2024-03-09 23:04:03       54 阅读
  9. k8s存储

    k8s存储

    2024-03-09 23:04:03      41 阅读