Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java List.add()和Map.put()_Java_Add_Put_Difference - Fatal编程技术网

Java List.add()和Map.put()

Java List.add()和Map.put(),java,add,put,difference,Java,Add,Put,Difference,使用列表和映射,我开始思考,为什么用于添加对象的映射方法被称为放置,而用于列表的映射方法是添加 这只是开发人员的意愿,或者在命名这些方法时有些不同 可能是在添加到Map/列表时让开发人员知道的方法名称他使用的是什么样的数据结构? 或者这些名称描述了它们的工作方式?我想如果你进入词源学,我们只能猜测,因为当你将一个值放入一个列表时,你总是会增加列表长度,但是如果你将该值放入一个映射,你就不必增加映射条目的数量(如果键已经存在)对我来说,这是有原因的。 毕竟,List是一个动态数组,它在内部由我们要

使用
列表
映射
,我开始思考,为什么用于添加
对象
的映射方法被称为放置,而用于列表的映射方法是
添加

这只是开发人员的意愿,或者在命名这些方法时有些不同

可能是在添加到
Map
/
列表时让开发人员知道的方法名称
他使用的是什么样的数据结构?
或者这些名称描述了它们的工作方式?

我想如果你进入词源学,我们只能猜测,因为当你将一个值放入一个列表时,你总是会增加列表长度,但是如果你将该值放入一个映射,你就不必增加映射条目的数量(如果键已经存在)

对我来说,这是有原因的。 毕竟,List是一个动态数组,它在内部由我们要添加的逻辑索引组成。 并在地图内部携带一桶密钥和值对。我们好像在往桶里放东西

可以这样说是因为要得到一个清晰的理解。 由于java是人类可理解的第三级语言,为了更好地理解,它也可以说成简单的英语。

区别在于:

  • .add()表示在末尾或您想添加的任何位置插入内容(您知道要添加的位置),而
  • .put()表示将元素添加到需要放置的任何位置,不一定在映射的末尾,因为它完全取决于要插入的键(您不知道要添加到哪里)
  • Collection#add()
    可以看出,您将自己的价值添加到了某个东西池中(Collection的一个实现定义了什么是池)


    而使用
    Map#put()
    可以将您的值与可能已经有值关联的键相关联。

    为此,您应该阅读Java文档中的和

    它们是两个不同的函数,接受完全不兼容的输入,并返回完全不兼容的值。它们是两个完全独立且截然不同的函数,它们的行为完全不同(不同的是,它们都用于向集合中添加元素(概念,而不是接口。因为map没有实现该接口))

    从文件中

    PUT

    将指定值与此映射中的指定键关联(可选操作)。如果映射以前包含键的映射,则旧值将替换为指定值。(称映射m包含密钥k的映射,当且仅当m.containsKey(k)返回true。)

    添加

    将指定的元素追加到此列表的末尾(可选操作)。
    支持此操作的列表可能会限制哪些元素可以添加到此列表中。特别是,一些列表将拒绝添加空元素,而其他列表将对可能添加的元素类型施加限制。列表类应在其文档中明确说明对添加哪些元素的限制。

    Add将始终在列表末尾添加一个条目

    如果密钥不存在,Put将向映射中注入一个条目;如果密钥已存在,则更新该值


    因此,操作是不同的。在某种程度上,API的作者必须做出平衡各种顾虑的决策。“添加到集合”具有添加到列表和放置到映射的某些方面,即添加“相等”条目无效。

    列表:-如果我说我正在向某个容器中添加一些条目,我会说我已经将这些条目添加到了容器中。这里,我们将更多地关注在现有的容器或列表中添加的新条目(java)

    地图:-如果我想把一些东西放在某个
    储物柜中,或者我的电脑已经有了我不在乎的东西,我只需要把它们放在上面,而不是添加。
    在这里,我们集中精力将新数据添加到存储柜或
    Map
    (java)中,而不考虑现有数据

    实时示例:-你在茶中添加糖,记住已经是他们的量。你把衣服放在服装店,考虑他们是否存在任何衣服

    在爪哇方面: 如果您的列表如下所示:-

    List<String> list = new ArrayList<String>();
            list.add("java");
            list.add("php");
            list.add("python");
            list.add("perl");
            list.add("c");
            list.add("lisp");
            list.add("c#"); 
    

    您再次添加了一些
    foodData.put(“企鹅”,3)
    您不必担心在内部添加和更新数据。

    以区分他们是如何设计语言的。
    add()
    可以看到您将其添加到某个内容的末尾,而使用
    put()
    则将您的值放在键所在的位置(这不是真正的实现)
    映射。放置
    列表。添加
    做非常不同的事情。说他们实际上是以同样的方式行事是完全不正确的。@UnholySheep和
    Set
    中的
    add
    方法无能为力。
    List
    是一个接口,
    ArrayList
    是一个使用数组的接口,在技术上是不正确的。当然,这取决于参数,你可以在开头或任何你想添加的地方添加,但是,使用put,你实际上不知道要插入到哪里。谢谢你的留言@Tezra!你的例子与茶,糖和名单,更提醒我一张地图,糖的数量每次更新的关键(杯)
    Map<String, Object> foodData = new HashMap<String, Object>();
        foodData.put("penguin", 1);
        foodData.put("flamingo", 2);