You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java:如何初始化List<element>?List<Foods>实例创建疑问

你这是踩了List接口的典型小坑啦!

兄弟,一看你就是刚接触Java集合的新手,你现在的写法完全搞错方向了——List是Java里的接口,不是具体的实现类!你直接写new List<Foods>()的时候,编译器会默认你要手动实现这个接口的所有抽象方法,所以才会弹出一堆要求重写的方法,这根本不是创建动态列表的正确姿势。

正确的创建方式:用List的现成实现类

Java早就给我们封装好了高效的List实现,日常开发用得最多的就是这两个:

  • ArrayList:基于数组实现,适合频繁查询的场景,是绝大多数情况下的首选
  • LinkedList:基于链表实现,适合频繁增删元素的场景

1. 创建空的动态列表

// 推荐用List作为变量类型,遵循面向接口编程的原则
public List<Foods> foodList = new ArrayList<>();

2. 创建时直接初始化元素

如果想一开始就往列表里塞元素,有两种常用写法:

方式一:双大括号初始化(简单快捷,但要注意匿名内部类的小细节)

public List<Foods> foodList = new ArrayList<>() {{
    add(new Foods("草莓蛋糕"));
    add(new Foods("麻辣小龙虾"));
}};

方式二:更规范的初始化(推荐,避免匿名内部类的潜在问题)

// 先通过Arrays.asList生成固定大小的列表,再转成可变的ArrayList
public List<Foods> foodList = new ArrayList<>(Arrays.asList(
    new Foods("草莓蛋糕"),
    new Foods("麻辣小龙虾")
));

如果你非要手动实现List接口(完全不推荐!)

虽然真的没必要,但还是给你说下思路:你需要自己维护一个存储元素的容器(比如数组或者另一个现成的List),然后基于这个容器实现接口的所有方法:

  • size():返回容器内元素的数量,比如return innerStorage.size();
  • isEmpty():直接判断size() == 0;
  • contains(Object o):遍历容器元素,用equals()判断是否匹配
  • add(Foods e):把元素加入容器,返回true(除非容器满了无法添加)
  • remove(Object o):找到匹配元素从容器删除,返回是否删除成功
  • 其他方法(比如get(int index)、set(int index, Foods element))也都是基于你维护的容器来操作

但真的别这么折腾,Java自带的ArrayList、LinkedList已经优化得非常成熟了,直接用就好!

内容的提问来源于stack exchange,提问作者user9512695

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:35:21