list中增加的put更新过的map的值是相同的
代码
    public static void main(String[] args) {

       test test = new test();

       test.bugOne();

  }

   private void bugOne() {

       List<Map<String, Object>> list = new ArrayList<>();
       HashMap<String, Object> map = new HashMap<>();

       map.put("1", "1");
       map.put("2", "2");
       map.put("3", "3");
       map.put("4", "4");
       list.add(map);

       System.out.println(list);

       for (int i = 0; i < 2; i++) {
           map.put("1", "11" + i);
           map.put("2", "22" + i);
           map.put("3", "33" + i);
           map.put("4", "44" + i);
           list.add(map);
      }

       System.out.println(list);
       
  }
结果
原因

在 Java 中,‌如果将相同的 Map 对象多次添加到 Lis t集合中,‌则在 List 集合中存储的 Map 对象实际上是同一个对象。

这是因为在 Java 中,通过变量和集合中保存的是对象的引用,‌而不是对象本身的拷贝。‌

当使用相同的对象作为参数多次调用方法时,‌实际上是多次使用了同一个对象。‌

因此,‌如果更改其中一个 Map 对象的值,‌所有在 List 集合中存储的 Map 对象都将反映这些更改,因为它们实际上是同一个对象。‌

解决

重新 New 一个新的 Map 对象用来存储数据

    public static void main(String[] args) {

       test test = new test();

       test.bugOne();

  }

   private void bugOne() {

       List<Map<String, Object>> list = new ArrayList<>();
       HashMap<String, Object> map = new HashMap<>();

       map.put("1", "1");
       map.put("2", "2");
       map.put("3", "3");
       map.put("4", "4");
       list.add(map);

       System.out.println(list);

//       for (int i = 0; i < 2; i++) {
//           map.put("1", "11" + i);
//           map.put("2", "22" + i);
//           map.put("3", "33" + i);
//           map.put("4", "44" + i);
//           list.add(map);
//       }

       for (int i = 0; i < 2; i++) {
           Map<String, Object> iMap = new HashMap<>();
           iMap.put("1", "11" + i);
           iMap.put("2", "22" + i);
           iMap.put("3", "33" + i);
           iMap.put("4", "44" + i);
           list.add(iMap);
      }

       System.out.println(list);
       
  }
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇