2011-10-12 44 views
0

我对List类有个疑问。根据我的理解,List是从Collection类派生的类。我的问题是,当我在互联网上阅读例子时,例如列表< Entry>条目;List类的工作原理的说明

我有轻微的困难,理解这实际上是什么意思?入学应该是另一个班级,但我不明白它是如何工作的。我将它读为,创建Entry类型列表并将其存储在条目中,是否正确?为了澄清我的问题,最让我困惑的是它的入口部分,如果是另一个类,那么这个列表的功能如何呢?它是在类Entry中创建的对象,它描述了它的列表类型?一个例子会很棒。

我很抱歉,如果我没有足够清楚,任何帮助非常感谢。我在这个特例中谈论Java。

回答

3

它被称为泛型。 Entry是类型参数。 List<Entry>表示“包含Entry对象的列表”。

样例:

Entry entry1 = new Entry(); 
Entry entry2 = new Entry(); 
Entry entry3 = new Entry(); 
List<Entry> entryList = new ArrayList<Entry>(); 

list.add(entry1); 
list.add(entry2); 
list.add(entry3); 

而且你不能做到这一点:

Boat wrongTypeObject = new Boat(); 
list.add(wrongTypeObject); 

因为对象wrongTypeObject不是Entry

好文章在这里:

http://en.wikipedia.org/wiki/Generics_in_Java

+0

非常感谢你,澄清了我对此感到困惑的内容。 – DSF

+0

谢谢@ steve-kuo。 C#删除了我的Java的很多东西!当然,List是Java中的一个接口(以及C#中的接口为IList的类)。 – Joe

1

必须阅读 “入门清单”。它描述了什么样的对象可以进入列表。阅读generics tutorial了解更多信息。

0

Java中没有这样的通用集合。该名单想知道你要放在里面。例如,List是一个包含字符串的列表。列表是一个包含整数的列表。

您应该注意,您不能将原始数据(整数,浮点数,双精度等)存储在集合中。你必须把它们装箱。 (int - > Integer,float - > Float,double - > Double)。

-1

Entry是一个对象,用于存储Map-derived类的内容,因此您可能会遇到偶尔的List<Entry>对象。然而,列表可以容纳任何类型的对象,如String S,Integer S,甚至其他List S:

List<Integer> intList = new ArrayList<Integer>(); //Create a new list of integers 
List<String> strList = new ArrayList<String>(); //You can't actually create a List. Use one of the derived classes like ArrayList instead 

strList.add("A string!"); // Now the list has one String in it 
strList.add(3); //You can't do this because strList can only hold Strings 

ArrayList< ArrayList<String> > strMatrix = new ArrayList< ArrayList<String> >() 

这最后一行创建列表的列表,这是通常用于存储2- D对象数组。

不要太担心Entry s直到你需要它们,然后你可以参考文档来看看如何从中获取数据。

0

“Entry”被称为参数化类型。你可以用任何引用类型(类或接口)来替换条目,它不能是原始类型。一旦指定了参数化类型,该特定类的对象将被存储到列表中。由于list是一个接口,所以你不能用new操作符实例化它。相反,你必须为它分配一个实现这个接口的具体子类。如何初始化列表的一个常见示例如下:

List <Parameterized Type> varName = new ArrayListf <Parameterized Type>();