TreeMap中computeifabsent(, o -> )
时间: 2024-05-04 22:19:07 浏览: 9
TreeMap中的`computeIfAbsent(key, mappingFunction)`方法是用来将指定的key映射到一个值的函数应用到Map中的指定key上,如果该key不存在则将其映射到函数返回的值上,并将其存储到Map中,否则返回已存在的值。
语法如下:
```
V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction)
```
其中,`key`表示要映射的key,`mappingFunction`表示key映射到值的函数。
对于`computeIfAbsent`方法,如果key在Map中存在,则不会调用映射函数,而是直接返回对应的value值。如果key在Map中不存在,则会调用映射函数,将key映射到函数返回的值上,并返回该值。
在TreeMap中,`computeIfAbsent`方法的作用与其他Map实现类相同,即根据指定的key来获得对应的value值,如果key不存在则使用指定的函数计算对应的value值,并将其存储到Map中。
相关问题
Map<String, Student> storage = new TreeMap<>((o1, o2) -> o2.compareTo(o1))
这是一个使用Java 8 Lambda表达式实现的Map构造函数,它创建了一个新的TreeMap,其中键以逆序排序,并且值是Student类型的对象。具体来说,Lambda表达式 `(o1, o2) -> o2.compareTo(o1)` 表示比较器,它将两个对象作为参数并返回一个int值,表示它们的顺序关系。在这种情况下,它使用 `compareTo` 方法将第二个对象与第一个对象进行比较,以实现逆序排序。因此,这个Map中的键按照逆序排列,并且值是Student类型的对象,可以通过键来访问相应的学生对象。
将字符串其数组中的字符串存入TreeMap<String, Integer> JAVA
可以通过以下步骤将一个字符串数组中的字符串及其出现次数存入 TreeMap<String, Integer> 中:
1. 创建一个 TreeMap 对象,用于存储字符串及其出现次数。
```
TreeMap<String, Integer> treeMap = new TreeMap<>();
```
2. 遍历字符串数组,对于每个字符串,如果它已经在 TreeMap 中出现过,则将其出现次数加 1;否则将其添加到 TreeMap 中,并将出现次数初始化为 1。
```
for (String str : strArray) {
if (treeMap.containsKey(str)) {
treeMap.put(str, treeMap.get(str) + 1);
} else {
treeMap.put(str, 1);
}
}
```
完整代码如下:
```
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
String[] strArray = {"apple", "banana", "orange", "pear", "apple", "banana"};
TreeMap<String, Integer> treeMap = new TreeMap<>();
for (String str : strArray) {
if (treeMap.containsKey(str)) {
treeMap.put(str, treeMap.get(str) + 1);
} else {
treeMap.put(str, 1);
}
}
System.out.println(treeMap);
}
}
```
输出结果为:
```
{apple=2, banana=2, orange=1, pear=1}
```