ic9*_*c90 6 java android dictionary
我正在编写一个Android应用程序,我正在使用一个使用循环的Java类,如下所示:
for (Set<I> itemset : candidateList2) {
supportCountMap.put(itemset, supportCountMap.getOrDefault(itemset,0)+ 1);
}
Run Code Online (Sandbox Code Playgroud)
我收到警告呼叫需要API级别24(当前最小值为16)的方法:
supportCountMap.getOrDefault(itemset,0)+1);
Run Code Online (Sandbox Code Playgroud)
该方法是否有任何解决方法,以便它可以在SDK版本低于24的手机上工作,例如Marshmallow(23)和Lollipop(21)?
Sau*_*kar 11
Kotlin:只需使用 elvis 运算符:
val value = map[key] ?: 0
Run Code Online (Sandbox Code Playgroud)
如果map[key]为空,则值为 0。
我建议创建MapCompat类,复制Map.getOrDefault实现并将您的map作为额外参数传递:
public class MapCompat {
public static <K, V> V getOrDefault(@NonNull Map<K, V> map, K key, V defaultValue) {
V v;
return (((v = map.get(key)) != null) || map.containsKey(key))
? v
: defaultValue;
}
}
Run Code Online (Sandbox Code Playgroud)
这种模式广泛用于Android 支持库,例如ContextCompat.getColor是很好的例子
您始终可以自己实现相同的逻辑:
for (Set<I> itemset : candidateList2) {
Integer value = supportCountMap.get(itemset);
if (value == null) {
value = 0;
}
supportCountMap.put(itemset, value + 1);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2000 次 |
| 最近记录: |