Java 什么';列表界面和集合界面的主要区别是什么?

Java 什么';列表界面和集合界面的主要区别是什么?,java,list,collections,Java,List,Collections,可能重复: 再次使用其中一个有什么优点/缺点吗?使用集合而不是列表的主要优点是什么?基本上,列表界面允许您执行涉及索引(位置)的操作:检索给定索引中的元素、删除索引中的元素、插入元素等 集合是一个更通用的接口,有更多的类来实现它。看一看 其中很多都有这样的行,表明它们来自集合界面: 指定人: size in interface Collection<E> 没有理由强迫此方法的用户只传递一个列表,因为我们调用它的唯一方法(add)在所有集合中都可用。a是a,但它添加了元素顺序的概

可能重复:


再次使用其中一个有什么优点/缺点吗?使用集合而不是列表的主要优点是什么?

基本上,列表界面允许您执行涉及索引(位置)的操作:检索给定索引中的元素、删除索引中的元素、插入元素等

集合是一个更通用的接口,有更多的类来实现它。

看一看

其中很多都有这样的行,表明它们来自
集合
界面:

指定人:

size in interface Collection<E>
没有理由强迫此方法的用户只传递一个列表,因为我们调用它的唯一方法(
add
)在所有
集合中都可用。

a是a,但它添加了元素顺序的概念。
除收集方法外,列表还有以下方法:

  • 公共布尔addAll(int索引,集合c)
  • 公共E-get(int索引)
  • 公共E集(整数索引,E元素)
  • 公共void add(int索引,E元素)
  • 公共E删除(int索引)
  • public int indexOf(对象o)
  • 公共int lastIndexOf(对象o)
  • 公共ListIterator ListIterator()
  • 公共ListIterator ListIterator(int索引)
  • 公共列表子列表(int fromIndex、int toIndex)
总的来说

  • 当订单重要和/或重复项正常时,使用列表。ArrayList是一个不错的选择
  • 当顺序无关紧要且重复项不合格时,使用集合。HashSet是一个不错的选择
  • 当顺序确实重要且重复项不正常时,请使用LinkedHashSet

文档将非常有效地回答这个问题:。我引用:[列表是]有序集合(也称为序列)。此界面的用户可以精确控制每个元素在列表中的插入位置。用户可以通过其整数索引(在列表中的位置)访问元素,并在列表中搜索元素。另外,“使用集合而不是列表”是什么意思?您打算如何实例化该集合?您将评估什么样的具体实现?对不起,我无意中对.NET问题投了一票。应该是:
E get(int index)

E set(int index,
      E element)

void add(int index,
         E element)

E remove(int index)

int indexOf(Object o)

int lastIndexOf(Object o)

ListIterator<E> listIterator()

ListIterator<E> listIterator(int index)

List<E> subList(int fromIndex,
                int toIndex)
/**
 * Simple example, adds "1" to the Collection
 */
public static void addOne(Collection in) {
    in.add(1);
}