声明 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 接口的所有方法。
相关推荐
嘻哈∠※6 小时前
0061基于 SpringBoot 的投稿与稿件处理系统设计与实现
java·spring boot·后端
白狐_7987 小时前
408数据结构第8章:排序②——性质对比秒杀、场景选择与外部排序
java·数据结构·算法
zander2587 小时前
LeetCode 84:柱状图中的最大矩形——单调栈如何确定左右边界
java·数据结构·算法
码匠许师傅8 小时前
【C++ 面试真题】聊聊 C++ 的拷贝构造与拷贝赋值
java·c++·面试
极创信息9 小时前
系统安全隐患全方位排查方案:标准化渗透测试全流程
java·opencv·struts·数据挖掘·eclipse·语音识别·hibernate
汉字萌萌哒10 小时前
2019CCF-CSP入门级C++试题解析
java·开发语言·c++
喜欢的名字被抢了10 小时前
程序出问题怎么查,以及如何让它不掉线
java·运维·数据库
数据知道11 小时前
反序列化漏洞:Java、PHP、Python 三条线各讲透
java·网络·python·安全·网络安全·php
2601_9499506311 小时前
Java 面试准备,用练题簿把“背过八股”变成“真正会答”
java·开发语言·面试·刷题·小程序推荐
Rain的Java大神之路12 小时前
MQ重复消费问题怎么解决
java·经验分享·后端·面试·架构·rabbitmq·rocketmq