我有一个带有List属性的Java AutoValue类.我想允许构建器附加到List而不必传递整个构造的列表.
例:
import com.google.auto.value.AutoValue;
@AutoValue
public abstract class Deck {
public abstract List<Card> cards();
public static Builder builder() {
return new AutoValue_Card.Builder()
.cards(new ArrayList<Card>());
}
@AutoValue.Builder
public abstract static class Builder {
public abstract Builder cards(List<Card> cards);
/**
* Append card to cards in the constructed Deck.
*/
public Builder addCard(Card card) {
// Is it possible to write this function?
}
}
}
Run Code Online (Sandbox Code Playgroud)
编写addCard函数的最佳解决方案是什么?AutoValue是否已经以某种方式支持此功能?构造类中的中间卡属性对Builder不可见,因此我无法直接访问它.我可以尝试通过在Builder中保留我自己的卡副本来直接绕过Builder,这是唯一的选择吗?
我想将Java BigDecimal舍入到一定数量的有效数字(非小数位),例如4位数:
12.3456 => 12.35
123.456 => 123.5
123456 => 123500
基本问题是如何找到BigDecimal的数量级,因此我可以决定小数点后使用的位数.
我能想到的只是一个可怕的循环,除以10直到结果<1,我希望有更好的方法.
顺便说一句,这个数字可能非常大(或非常小)所以我无法将其转换为双倍以使用登录它.
我有以下对象列表:
private List<Object> teamlist = new ArrayList<Object>();
Run Code Online (Sandbox Code Playgroud)
我正在向列表中添加对象,如下所示:
teamlist.add(new MCWarTeam(args[0], joinkey));
Run Code Online (Sandbox Code Playgroud)
现在列表中的对象没有名称,但可以使用列表引用,对吧?在向列表中添加新元素之前,如何检查具有特定属性的对象是否已存在?这是Objects的构造函数:
public MCWarTeam(String teamname, String joinkey){
this.teamname = teamname;
this.joinkey = joinkey;
}
Run Code Online (Sandbox Code Playgroud)
我想检查是否已经有一个名为teamname的团队.或者,是否有更好的方法来存储对象?之前,我只是使用HashMap添加了teamname和joinkey,它运行得很好,但是使用Objects计算它将是一种更好的方法.
以下是事件处理程序的重要代码:
else if (cmd.getName().equalsIgnoreCase("createTeam")) {
if (args.length > 0 && args.length < 3) {
String joinkey = "";
if (args.length > 1)
joinkey = args[1];
String teamname = args[0];
MCWarTeam newTeam = new MCWarTeam(teamname, joinkey);
if (!teamlist.containsKey(teamname)) {
teamlist.put(teamname, newTeam);
sender.sendMessage("Created new team \"" + teamname + "\" with join key \"" + …
Run Code Online (Sandbox Code Playgroud) 我有一个表tab1 (t_id, status)
和表tab2 (id, t_id, status)
,其中t_id.tab2
有外键引用tab1.t_id
.
假设一个Oracle会话S1获得SELECT FOR UPDATE NOWAIT
在创纪录的锁tab1
用t_id=123
.
当NOWAIT
s1仍然保持锁定时tab1
,另一个会话s2可以tab2
用tab2.t_id=123
(FK)更新记录吗?
java ×3
arraylist ×1
auto-value ×1
bigdecimal ×1
bukkit ×1
locking ×1
object ×1
oracle ×1
oracle11g ×1
sql ×1