CSDN-Ada助手 2023-05-24 10:47 采纳率: 2.7%
浏览 16
已结题

Dictionary的add添加键值时是复制还是和原来的变量有关联?_(语言-java)

该问题来自社区帖: https://bbs.csdn.net/topics/615500503.为符合问答规范, 该问题经过ChatGPT优化
Dictionary<string, PluginsInfo> dic = new Dictionary<string, PluginsInfo>();
PluginsInfo pluginsInfo = new PluginsInfo();
pluginsInfo.Name = "2222";
dic.Add("2", pluginsInfo);
MessageBox.Show("对象本身: " + ReferenceEquals(pluginsInfo, dic["2"]).ToString());
MessageBox.Show("对象的参数: " + ReferenceEquals(pluginsInfo.Name, dic["2"].Name).ToString());

Dictionary<string, DataCell> dic2 = new Dictionary<string, DataCell>();
DataCell data = new DataCell();
data.DataValue = "www";
dic2.Add("2", data);
MessageBox.Show("对象本身: " + ReferenceEquals(data, dic2["2"]).ToString());
MessageBox.Show("对象的参数: " + ReferenceEquals(data.DataValue, dic2["2"].DataValue).ToString());
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-05-24 15:26
    关注
    • 以下回答由chatgpt基于相关博客总结生成:

      很抱歉,Java中的Dictionary类已经被废弃,在Java 1.2版本之后,使用Map代替了Dictionary类,Map是一个更通用的接口,提供类似于Dictionary类的键值映射,同时也支持更多的键值类型,例如字符串、对象等。但是不管是Dictionary还是Map,对于往其中添加键值的操作,都不是创建一个新的变量,而是与原有的变量产生关联。

      在Dictionary或Map中,添加键值的过程可以简述为以下几步:

      1. 创建一个键对象和一个值对象
      2. 使用键对象作为参数调用put方法,将值对象与键对象进行关联
      3. 如果之前已经存在了该键对象,put方法会将新的值对象与该键对象进行关联,并返回该键对象之前所关联的值对象
      4. 如果该键对象之前没有被关联任何值对象,则put方法会返回null

      以下是使用Java Map实现添加键值对的示例代码:

      Map<String, Integer> map = new HashMap<>(); // 创建一个Map对象
      map.put("apple", 10); // 添加键值对
      

      在这个示例中,首先创建了一个Map对象,然后通过put方法向其中添加一个键为"apple",值为10的键值对,此时"apple"和10这两个对象与这个Map对象产生了关联。如果再次调用put方法,使用"apple"这个键添加一个新的值,例如20,那么这时这个键"apple"和新的值20就会与之前的Map对象产生关联,而不是创建新的变量。

    评论

    报告相同问题?

    问题事件

    • 系统已结题 6月1日
    • 创建了问题 5月24日

    悬赏问题

    • ¥15 端口转发器解析失败不知道电脑设置了啥
    • ¥15 Latex算法流程图行号自定义
    • ¥15 关于#python#的问题:我在自己的电脑上运行起来总是报错,希望能给我一个详细的教程,(开发工具-github)
    • ¥40 基于51单片机实现球赛计分器功能
    • ¥15 cs2游戏画面卡住,应用程序sid与指挥者sid不匹配
    • ¥15 实验七:Pandas要有实验截图和代码
    • ¥15 TypeError: Make sure that the iterable only contains strings.
    • ¥35 电脑放图书馆,这是被黑了吗
    • ¥15 等高线中数据取消科学计数法
    • ¥15 Qt播放10路ffmpeg 视频流