java中的noob级泛型集合

java中的noob级泛型集合,java,generics,types,collections,Java,Generics,Types,Collections,关于: List<String> mystring = new ArrayList<String>(); List mystring=new ArrayList(); 如果我错了,请纠正我: 列表是一个集合,也可以是设置、队列或映射 String是一种类型 mystring是此变量的名称,将是String对象的通用集合 ArrayList是一个?也可能是 如果我在和另一个开发人员交谈,我该怎么称呼ArrayList呢 ArrayList是List接口的一个实现 Arr

关于:

List<String> mystring = new ArrayList<String>();
List mystring=new ArrayList();
如果我错了,请纠正我:

列表
是一个
集合
,也可以是
设置
队列
映射

String
是一种类型

mystring
是此变量的名称,将是
String
对象的通用集合

ArrayList
是一个?也可能是

如果我在和另一个开发人员交谈,我该怎么称呼
ArrayList

  • ArrayList是List接口的一个实现
  • ArrayList是mystring变量的一个具体类(但是在此上下文中,它应该是无关紧要的,因为mystring是列表类型)
  • ArrayList
    是(名称不正确的)mystring变量的具体类型

  • 列表
    是一个界面。
    ArrayList
    是实现此接口的具体类
  • 列表不能是
    集合
    队列
    映射
    ,也不能是
    列表
    以外的任何内容
  • 字符串
    是一个
    对象
  • List mystring=new ArrayList()
    意味着
    myString
    String
    实例的集合(在本例中是一个列表)

  • 列表是一个接口。ArrayList是List(与LinkedList一样)的实现。

    List是一个接口。它赋予对象一种行为。本例中的ArrayList是实现。但它也可以是实现列表接口的任何其他对象。向量是另一个例子

    在这种情况下,Vector的工作原理与ArrayList非常相似,但它是同步的。如果您需要并发性,您可能会使用向量,但它是有代价的。它比ArrayList慢一点

    如果您使用Java Mobile,您将看到您只有Vector而没有ArrayList


    ArrayList可以是您想要的任何对象的集合,但是您正在声明中设置类型,因此当您从列表中检索对象时,它将期望该类型。如果你还需要什么,你就得做演员

    如果您正在与另一位开发人员讨论这一特定代码行,并且您的讨论主题是关于元素的有序集合,那么您可能应该称之为列表。这样,您就可以访问mystring对象所描述的所有特定于列表的行为


    您可以像处理任何集合(即列表、队列、集合)一样与它进行交互。然后,您只能访问所有这些类型中的公共分母行为。顺便说一句,集合或更具体地说列表不能是地图。

    So[interface][name]=new[implementation of interface]();确切地您没有义务在声明中使用接口,但是它的最佳实践是使用满足您需求的第一个接口。例如,如果集合具有所需的方法,则甚至不要使用列表。您也可以直接使用ArrayList,但在将来,如果您需要更改应用程序,这将更加困难,因为您需要更新所有引用。我喜欢这个答案,它很清楚,而且切中要害,尽管我认为您应该解释
    设置
    队列
    映射
    本身就是不从
    列表
    扩展的接口。还有第四点,我觉得需要详细说明,
    mystring
    是一种(类型)
    Collection
    ,因为
    Collection
    List
    的超级接口,在这种情况下,它将是
    String
    对象的
    List