legongju.com
我们一直在努力
2025-01-12 18:47 | 星期天

java putifabsent与put区别

putIfAbsentput都是Java集合框架中Map接口的方法,它们都用于向Map中添加元素。但是,这两个方法之间存在一些关键区别:

  1. 当键不存在时:

    • putIfAbsent:如果指定的键不存在于Map中,则将键值对添加到Map中。如果键已经存在,则不会执行任何操作,并返回键对应的旧值(如果存在)。
    • put:将键值对添加到Map中,如果键已经存在,则会覆盖旧的值,并返回键对应的旧值(如果存在)。
  2. 返回值:

    • putIfAbsent:返回键对应的旧值(如果存在),否则返回null
    • put:返回键对应的旧值(如果存在),否则返回null

下面是一个简单的示例:

import java.util.HashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        Map map = new HashMap<>();

        // 使用putIfAbsent
        String oldValue1 = map.putIfAbsent("key1", "value1");
        System.out.println("Old value for key1 (putIfAbsent): " + oldValue1); // 输出:null
        System.out.println("Value for key1 (putIfAbsent): " + map.get("key1")); // 输出:value1

        String oldValue2 = map.putIfAbsent("key1", "value2");
        System.out.println("Old value for key1 (putIfAbsent): " + oldValue2); // 输出:value1
        System.out.println("Value for key1 (putIfAbsent): " + map.get("key1")); // 输出:value1

        // 使用put
        String oldValue3 = map.put("key2", "value3");
        System.out.println("Old value for key2 (put): " + oldValue3); // 输出:null
        System.out.println("Value for key2 (put): " + map.get("key2")); // 输出:value3

        String oldValue4 = map.put("key1", "value4");
        System.out.println("Old value for key1 (put): " + oldValue4); // 输出:value1
        System.out.println("Value for key1 (put): " + map.get("key1")); // 输出:value4
    }
}

总结:putIfAbsentput的主要区别在于,当键已经存在于Map中时,putIfAbsent不会修改键对应的值,而put会覆盖旧的值。在其他方面,这两个方法的返回值和行为相似。

未经允许不得转载 » 本文链接:https://www.legongju.com/article/5528.html

相关推荐

  • 在java中使用工厂模式时需要注意哪些问题

    在java中使用工厂模式时需要注意哪些问题

    在Java中使用工厂模式时,有一些关键的注意事项和最佳实践,以确保代码的可维护性、可扩展性和可重用性。以下是一些建议: 选择合适的工厂模式:根据你的需求选择...

  • java工厂模式如何实现解耦和扩展

    java工厂模式如何实现解耦和扩展

    在Java中,工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。工厂模式可以实现解耦和扩展,主要通过以下几个步骤: 定义接口:首先,定义一个接口...

  • 工厂模式在java中的优缺点分析

    工厂模式在java中的优缺点分析

    工厂模式(Factory Pattern)是一种创建型设计模式,它提供了一种创建对象的最佳方式。在Java中,工厂模式主要有三种类型:简单工厂模式、工厂方法模式和抽象工厂...

  • 如何在java中应用工厂模式创建对象

    如何在java中应用工厂模式创建对象

    在Java中,工厂模式(Factory Pattern)是一种创建型设计模式,它提供了一种创建对象的最佳方法
    以下是如何在Java中使用工厂模式创建对象的步骤: 定义一个...

  • java putifabsent能处理并发吗

    java putifabsent能处理并发吗

    是的,putIfAbsent方法在Java的ConcurrentHashMap类中可以处理并发。ConcurrentHashMap是一个线程安全的哈希表实现,它使用了分段锁技术来减小锁的粒度,从而提高...

  • java matches社区支持如何

    java matches社区支持如何

    Java Matches社区是一个专注于Java编程语言的开发者和技术爱好者的社区。这个社区提供了丰富的资源、讨论和问题解答,帮助开发者解决在Java编程过程中遇到的问题...

  • java matches文档在哪找

    java matches文档在哪找

    在Java中,要查找与正则表达式匹配的字符串,可以使用Pattern和Matcher类。以下是一个简单的示例:
    import java.util.regex.Pattern;
    import java.uti...

  • java matches错误处理方法

    java matches错误处理方法

    在Java中,当使用正则表达式进行字符串匹配时,可能会遇到PatternSyntaxException错误。这个异常通常是由于正则表达式语法错误导致的。为了处理这个错误,你可以...