如何替换 TreeMap 中给定键的值?
Java 中的TreeMap与 AbstractMap 类一起Java实现Map 接口和NavigableMap。映射根据其键的自然顺序进行排序,或者通过映射创建时提供的 Comparator 进行排序,具体取决于使用的构造函数。
- 它是 Map 接口的实现类。
- 它根据键对元素进行排序。
- 它不维护插入顺序。
我们可以使用给定键替换值的方法:
- 使用 TreeMap 类的 put() 方法
- 使用 TreeMap 类的 replace() 方法
- 使用 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