📜  如何替换 TreeMap 中给定键的值?

📅  最后修改于: 2022-05-13 01:54:44.469000             🧑  作者: Mango

如何替换 TreeMap 中给定键的值?

Java 中TreeMap与 AbstractMap 类一起Java实现Map 接口NavigableMap。映射根据其键的自然顺序进行排序,或者通过映射创建时提供的 Comparator 进行排序,具体取决于使用的构造函数。

  • 它是 Map 接口的实现类。
  • 它根据键对元素进行排序。
  • 它不维护插入顺序。

我们可以使用给定键替换值的方法:

  1. 使用 TreeMap 类的 put() 方法
  2. 使用 TreeMap 类的 replace() 方法
  3. 使用 TreeMap 类的 ComputeIfPresent() 方法

1. put() 方法

句法:

Tree_Map.put(key, value)

参数:该方法有两个参数,都是TreeMap的Object类型。

  • key:指的是需要插入到Map中进行映射的key元素。
  • value:这是指上述键将映射到的值。

返回值:如果传递了现有的键,则返回先前的值。如果传递了一个新对,则返回 NULL。

  • 使用 put 方法,我们可以替换已经存在的键的值,但如果键不存在,它会创建一个新记录。
Java
// Java program  to replace a value for 
// the given key in the TreeMap
  
import java.io.*;
import java.util.TreeMap;
class GFG {
    public static void main (String[] args) {
          
      TreeMap gfg=new TreeMap<>();
        
      //adding values to the treemap
        
      gfg.put("dsa",99);
      gfg.put("interview",98);
      gfg.put("fang",80);
        
      //for the fang key we will change the value from 80 to 99
      //using put method
      gfg.put("fang",99);
        
      for(String key: gfg.keySet()){
      System.out.println(key+" , "+gfg.get(key));
      }
    }
}


Java
// Java program  to replace a value 
// for the given key in the TreeMap
  
import java.io.*;
import java.util.TreeMap;
class GFG {
    public static void main (String[] args) {
          
      TreeMap gfg=new TreeMap<>();
        
      //adding values to the treemap
        
      gfg.put("dsa",99);
      gfg.put("interview",98);
      gfg.put("fang",80);
        
      //here we are using dsa key to change its value form 99 to 100
      gfg.replace("dsa",100);
        
      for(String key: gfg.keySet()){
      System.out.println(key+" , "+gfg.get(key));
      }
    }
}


Java
// Java program  to replace a value 
// for the given key in the TreeMap
  
import java.io.*;
import java.util.TreeMap;
class GFG {
    public static void main (String[] args) {
          
      TreeMap gfg=new TreeMap<>();
        
      //adding values to the treemap
        
      gfg.put("dsa",99);
      gfg.put("interview",98);
      gfg.put("fang",80);
        
      //here we are using interview key to change its value form 98 to 50
      gfg.computeIfPresent("interview",(k,v)->50);
        
      for(String key: gfg.keySet()){
      System.out.println(key+" , "+gfg.get(key));
      }
    }
}


输出
dsa , 99
fang , 99
interview , 98

2. 使用replace()方法:

  • replace() 方法替换给定键的值,但 replace 和 put 之间存在差异。
  • 在替换密钥不存在的情况下,它不会创建新记录。

句法:

public V replace(K key, V value)

参数:此方法接受两个参数:

  • 关键:这是 其值必须被替换的元素的键。
  • value:这是必须与提供的键映射的新值。

返回值:此方法返回与指定键关联的先前值。如果没有映射这样的键,那么它返回null ,如果实现支持 null 值。

异常:此方法将抛出:

  • NullPointerException如果指定的键或值为空,并且此映射不允许空键或值并且
  • IllegalArgumentException如果指定键或值的某些属性阻止其存储在此映射中。

Java

// Java program  to replace a value 
// for the given key in the TreeMap
  
import java.io.*;
import java.util.TreeMap;
class GFG {
    public static void main (String[] args) {
          
      TreeMap gfg=new TreeMap<>();
        
      //adding values to the treemap
        
      gfg.put("dsa",99);
      gfg.put("interview",98);
      gfg.put("fang",80);
        
      //here we are using dsa key to change its value form 99 to 100
      gfg.replace("dsa",100);
        
      for(String key: gfg.keySet()){
      System.out.println(key+" , "+gfg.get(key));
      }
    }
}
输出
dsa , 100
fang , 80
interview , 98

3.computeIfPresent ()方法:

  • 它存在于Java 8 中。 HashMap 类的computeIfPresent(Key, BiFunction)方法允许您计算指定键的映射值,如果键已经与值相关联(或映射到 null)。

Java

// Java program  to replace a value 
// for the given key in the TreeMap
  
import java.io.*;
import java.util.TreeMap;
class GFG {
    public static void main (String[] args) {
          
      TreeMap gfg=new TreeMap<>();
        
      //adding values to the treemap
        
      gfg.put("dsa",99);
      gfg.put("interview",98);
      gfg.put("fang",80);
        
      //here we are using interview key to change its value form 98 to 50
      gfg.computeIfPresent("interview",(k,v)->50);
        
      for(String key: gfg.keySet()){
      System.out.println(key+" , "+gfg.get(key));
      }
    }
}
输出
dsa , 99
fang , 80
interview , 50