ArrayList<String> 和List<String> sites 推荐哪个

1. 为什么推荐 List<String>

(1) 面向接口编程

  • 在 Java 中,推荐面向接口编程而不是面向具体实现类编程。
  • 使用 List<String> 声明变量意味着你只关心这个对象是否实现了 List 接口,而不关心它具体是哪种实现类(如 ArrayListLinkedList 等)。
  • 这样可以提高代码的灵活性和可维护性。

(2) 代码更通用

  • 如果将来需要更换底层实现(例如从 ArrayList 换成 LinkedList),只需要修改 new ArrayList<>() 那一行代码,而不需要修改其他地方的逻辑。

  • 示例:

    // 原始代码
    List<String> sites = new ArrayList<>();
    
    // 更改为 LinkedList 时
    List<String> sites = new LinkedList<>();
    
  • 如果使用 ArrayList<String> 声明变量,则代码的通用性较差。

(3) 减少耦合

  • 使用 List<String> 声明变量减少了代码对具体实现类的依赖,降低了耦合度。
  • 这符合软件设计中的“依赖倒置原则”(Depend on Abstractions, not on Concretions)。

(4) 接口方法足够用

  • List 接口已经定义了所有常用的操作方法(如 add()get()remove() 等),通常情况下不需要直接调用 ArrayList 提供的额外方法。
  • 因此,使用 List<String> 就足够满足大多数需求。

2. 什么时候使用 ArrayList<String>

尽管推荐使用 List<String>,但在某些特殊情况下,可能需要直接使用 ArrayList<String>

  • 当你需要调用 ArrayList 类特有的方法时(如 ensureCapacity()trimToSize())。

  • 示例:

    ArrayList<String> sites = new ArrayList<>();
    sites.ensureCapacity(100); // ArrayList 特有的方法
    

不过,这种情况相对较少见。


3. 总结对比

特性 ArrayList<String> List<String>
灵活性 较低(绑定到具体实现类) 较高(可以轻松更换实现类)
耦合度 较高(依赖具体实现类) 较低(依赖接口)
代码通用性 较差 较好
适用场景 需要调用 ArrayList 特有方法时 大多数情况下推荐使用
posted @   zs-jjboy  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示