【发布时间】:2022-02-03 06:34:10
【问题描述】:
我正在尝试在我的地图上使用 .compute(),但从未触发过 else 语句。
public void onInviteUser(int adapterPosition) {
Log.d(TAG, "onInviteUser: " + adapterPosition); //not null
mapInvitedFriends.compute(adapterPosition, (k, v) -> {
Log.d(TAG, "onInviteUser: " + adapterPosition);
if (v == null) {
Log.d(TAG, "onInviteUser: " + v);
mapInvitedFriends.put(adapterPosition, listFriends.get(adapterPosition));
Log.d(TAG, "onInviteUser: " + listFriends.get(adapterPosition).toString());
return v;
} else {
//Never gets fired
Log.d(TAG, "onInviteUser: " + v);
mapInvitedFriends.remove(adapterPosition);
return v;
}
});
}
我已经记录了所有内容,但我无法弄清楚为什么 v 的值始终为空。
编辑:
地图的类型是:
private final Map<Integer, Friend> mapInvitedFriends = new HashMap<>();
private final List<Friend> listFriends = new ArrayList<>();
【问题讨论】:
-
minimal reproducible example 在这里会非常有帮助 - 你还没有告诉我们任何关于
mapInvitedFriends的事情 - 甚至没有告诉我们它的类型,或者是什么创造了它。 -
添加了编辑
-
当
v为空时,您的compute方法返回null,这意味着您从不创建映射...
标签: java