【问题标题】:Explanation of how List class worksList 类如何工作的解释
【发布时间】:2011-10-12 18:46:42
【问题描述】:

我有一个关于 List 类的问题。据我了解 List 是一个派生自 Collection 类的类。我的问题是,当我在互联网上阅读示例时,它说例如 List entries;

我很难理解这实际上意味着什么?条目应该是另一个类,但我不明白它是如何工作的。我把它读为,创建条目类型列表并将其存储在条目中,对吗?只是为了澄清我的问题,最让我困惑的是它的 Entry 部分,如果它是另一个类,它如何使列表起作用?它是在描述列表类型的类条目中创建的对象吗?举个例子就好了。

如果我不够清楚,我深表歉意,非常感谢任何帮助。在这种特殊情况下,我正在谈论 Java。

【问题讨论】:

    标签: java class list generics generic-list


    【解决方案1】:

    它被称为泛型。 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

    【讨论】:

    • 非常感谢,这澄清了我的困惑。
    • 谢谢@steve-kuo。 C# 抹去了我的大部分 Java!当然 List 在 Java 中是一个接口(在 C# 中是一个类,其中接口是 IList)。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      Java 中没有泛型集合这样的东西。该列表想知道您将在其中放入什么。例如,List 是一个包含字符串的列表。 List 是一个包含整数的列表。

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

      【讨论】:

        【解决方案4】:

        Entry 是用于存储Map-derived 类内容的对象,因此您可能会偶尔遇到List&lt;Entry&gt; 对象。但是,列表可以包含任何类型的对象,例如Strings、Integers,甚至是其他Lists:

        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> >()
        

        最后一行创建了一个列表列表,通常用于存储对象的二维数组。

        在您需要之前不要太担心Entrys,然后您可以查阅文档以了解如何从中获取数据。

        【讨论】:

          猜你喜欢
          • 2021-10-24
          • 1970-01-01
          • 2017-08-08
          • 1970-01-01
          • 2016-11-16
          • 1970-01-01
          • 2017-10-07
          • 1970-01-01
          • 2014-01-05
          相关资源
          最近更新 更多