使用哈希映射时,如果密钥尚未存在,则通常需要添加key:value
对。
这读得不错,但并不是最佳。
if !map.contains(key) {
let val = create_val();
map.insert(key, val);
some_creation_logic(val);
} else {
let val = map[key];
some_update_logic(val);
}
虽然这样可行但总是会进行2次查找。
我最接近的是使用Entry.or_insert
(或or_insert_with
),计算长度,以便可以采用else
分支。
let map_len_prev = map.len();
let val = map.or_insert_with(key, create_val);
if map_len_prev != map.len() {
some_creation_logic(val);
} else {
some_update_logic(val);
}
是否有一种更清晰的方法可以在需要时插入一个值,同时保持一种运行两个逻辑分支的方式来处理已经/不存在的情况?
答案 0 :(得分:11)
您可以匹配@Entity
public class Book {
public static final String TABLE = "books";
public static final String PAGE_COUNT = "page_count";
//everything else
}
@Service
public class SomeService {
public void someMethod() {
String query = "SELECT * FROM " + Book.TABLE + " WHERE " + Book.PAGE_COUNT + " < 10";
}
}
:
Entry