这是我第一次使用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;
}
};
答案 0 :(得分:2)
List
是Interface
,如果您直接使用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<>();
List
是interface
,无法实例化(没有实现任何方法)。 ArrayList
是List
接口的一个实现,它使用内部数组来存储其元素。
通过撰写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