Java 集合与<;之间的区别是什么&燃气轮机;和收藏<;对象>;?

Java 集合与<;之间的区别是什么&燃气轮机;和收藏<;对象>;?,java,collections,Java,Collections,1.什么是收藏 我测试了这段代码: Collection<?> l = new ArrayList<String>(); l.add("s"); Collection l=newarraylist(); l、 添加(“s”); 我无法添加“s”字符串。那么的用途是什么?在哪些情况下我会使用它 2.收藏与收藏的区别是什么和集合 从 集合(发音为“未知集合”),即 元素类型与任何内容匹配的集合。这叫做通配符 因为明显的原因而打字 Collection类型的

1.什么是收藏<?>

我测试了这段代码:

    Collection<?> l = new ArrayList<String>();
    l.add("s");
Collection l=newarraylist();
l、 添加(“s”);
我无法添加“s”字符串。那么<?>的用途是什么?在哪些情况下我会使用它

2.收藏与收藏的区别是什么和集合

  • 集合
    (发音为“未知集合”),即 元素类型与任何内容匹配的集合。这叫做通配符 因为明显的原因而打字

  • Collection
    类型的变量是可以包含任何类型的集合。您的代码不知道将在该集合中放置什么类型的对象。这与
    集合
    略有不同,后者是一个包含对象类对象的集合(它指定对象,而不是说它可以除任何对象之外)。(它是java中每个对象的父对象,包括字符串)
  • 您通常不想初始化
    集合
    ,因为您无法向其中添加任何内容(据我所知)

    然而,当你制作一个可以对任何东西的集合进行操作的函数时,这是非常有用的

    例如,您可以从oracle中创建类似于该示例的函数

    void printCollection(Collection<?> c) {
        for (Object e : c) {
            System.out.println(e);
        }
    }
    
    void printCollection(集合c){
    用于(对象e:c){
    系统输出打印ln(e);
    }
    }
    
    此方法将能够接受任何类型的集合

    在哪里

    void printCollection(Collection<Object> c) {
        for (Object e : c) {
            System.out.println(e);
        }
    }
    
    void printCollection(集合c){
    用于(对象e:c){
    系统输出打印ln(e);
    }
    }
    
    只能对
    集合
    ,(该集合不是
    集合
    ,即使String是Object的子类)

    1.什么是收藏<?>

    集合
    指定元素类型未知的
    集合
    。由于元素类型未知,您永远无法知道任何特定对象属于集合接受的类型,因此向其添加任何内容都不是类型安全的

    另一方面,您可以始终假定从此类集合中获得的任何元素都是
    对象
    ,并且可以调用任何查询和元素删除方法

    这对于不依赖于集合元素类型的集合操作非常有用和合适

    2.收藏与收藏的区别是什么和集合


    集合
    是可以将任何
    对象
    作为元素的集合。这两种方法的相似之处在于,您无法对此类集合的元素类型做出任何假设,但它们的不同之处在于,向
    集合添加任何对象都是安全的。正是由于这个原因,您无法对元素类型进行假设,这造成了所有的差异:对于
    Collection
    ,您不知道类型约束,但是对于
    Collection
    ,您知道没有约束。

    您说的是集合<?>是任何东西的集合。在这里,我认为任何东西都是指任何对象。因为我们添加到集合中的任何项目都不是对象。所有东西都从对象扩展而来。我混淆了这一点。即使我们不能添加int,我们也必须添加Integer,这样它也可以从object扩展。大多数新手并不完全理解类型、类、实例和变量之间的区别。我认为当你说“一个
    集合
    是任何东西的集合”时可能会让人困惑,因为这听起来就像一个
    集合
    (也就是说,一个可以包含任何对象的集合)如果你说
    Collection
    类型的变量可以指任何类型的
    Collection
    对象,我想你的意思会更清楚。我完全同意。我写这篇文章的时候有点匆忙,我当然愿意接受建议:)