Java如何初始化列表<element>

时间:2018-03-18 16:51:10

标签: java android

这是我第一次使用List。我有一个名为Foods的类,我想制作一个动态列表。我编写了第一行,你可以在下面看到,然后有很多方法刚刚弹出我需要覆盖。我应该在每种方法中写什么?或者这是制作列表实例的正确方法吗?

public List<Foods> food = new List<Foods>() {

    //then these list of methods just popped out//

    @Override
    public int size() {
        return 0;
    }

    @Override
    public boolean isEmpty() {
        return false;
    }

    @Override
    public boolean contains(Object o) {
        return false;
    }

    @NonNull
    @Override
    public Iterator<Foods> iterator() {
        return null;
    }

    @NonNull
    @Override
    public Object[] toArray() {
        return new Object[0];
    }

    @NonNull
    @Override
    public <T> T[] toArray(@NonNull T[] ts) {
        return null;
    }

    @Override
    public boolean add(Foods foods) {
        return false;
    }

    @Override
    public boolean remove(Object o) {
        return false;
    }

    @Override
    public boolean containsAll(@NonNull Collection<?> collection) {
        return false;
    }

    @Override
    public boolean addAll(@NonNull Collection<? extends Foods> collection) {
        return false;
    }

    @Override
    public boolean addAll(int i, @NonNull Collection<? extends Foods> collection) {
        return false;
    }

    @Override
    public boolean removeAll(@NonNull Collection<?> collection) {
        return false;
    }

    @Override
    public boolean retainAll(@NonNull Collection<?> collection) {
        return false;
    }

    @Override
    public void clear() {

    }

    @Override
    public Foods get(int i) {
        return null;
    }

    @Override
    public Foods set(int i, Foods foods) {
        return null;
    }

    @Override
    public void add(int i, Foods foods) {

    }

    @Override
    public Foods remove(int i) {
        return null;
    }

    @Override
    public int indexOf(Object o) {
        return 0;
    }

    @Override
    public int lastIndexOf(Object o) {
        return 0;
    }

    @NonNull
    @Override
    public ListIterator<Foods> listIterator() {
        return null;
    }

    @NonNull
    @Override
    public ListIterator<Foods> listIterator(int i) {
        return null;
    }

    @NonNull
    @Override
    public List<Foods> subList(int i, int i1) {
        return null;
    }
};

5 个答案:

答案 0 :(得分:2)

ListInterface,如果您直接使用new,则必须将其作为匿名类实现(上面的代码)。

相反,您可以使用提供的实现java.util包,例如ArrayList和LinkedList,您可以像这样启动它:

public List<Foods> food = new ArrayList<>():

public List<Foods> food = new LinkedList<>():

答案 1 :(得分:2)

列表与LT;&GT;是其他列表类型的接口,例如ArrayList和LinkedList实现。

初始化List时,您希望使用已经为您实现弹出的方法的其他List类型之一。

例如:

public List<Foods> food = new ArrayList<>()

答案 2 :(得分:1)

您可能不需要覆盖任何方法,只需像这样创建一个List

private List<Foods> list = new ArrayList<>();

Listinterface,无法实例化(没有实现任何方法)。 ArrayListList接口的一个实现,它使用内部数组来存储其元素。

通过撰写List<Foods>,您宣布此List将包含Foods类型的元素。

您通常不应该使用字段public,使用private,如果您需要从其他类访问它们,请添加getter / setter方法。

答案 3 :(得分:1)

List是一个接口,所以如果你直接调用它,当然你必须覆盖它的方法。 实例化List的正确方法是实例化实现它的一个类,最常用的是ArrayList和LinkedList:

List<Foods> food = new LinkedList<>(); 要么     List<Foods> food = new ArrayList<>(); 第一个是有序列表,第二个是随机访问。

我建议你阅读List接口的javadoc(以及你不熟悉的任何java对象):你可以找到关于你正在使用的对象的有用信息,例如它是一个类还是一个接口,在最后一个案例中有一个名为“所有已知的实现类”的部分,您可以在其中找到实现它的所有类,以便您可以决定所需的实现。

答案 4 :(得分:0)

如果您想要实现({1}}或ArrayList(您的食物清单特有的东西),那么是的,您必须指定这些方法。否则,正如之前的帖子所建议的那样,使用这种方法:

LinkedList