gpt4 book ai didi

java - 由确定字段索引的对象容器

转载 作者:行者123 更新时间:2023-11-29 06:51:49 24 4
gpt4 key购买 nike

我有一组对象,需要按对象的确定字段进行索引。有一个 HashMap 的示例实现(UPDATE: 实际上,HashMap 只是用于说明,我不坚持我要查找的容器一定是 HashMap)

public class Foo {
public String id; // The Field to index by

// some other fields just for number
public int i;
public double d;
public String description;
public String rule;
public double otherD;

public Foo(String id, int i, double d, String description, String rule, double otherD) {
this.id = id;
this.i = i;
this.d = d;
this.description = description;
this.rule = rule;
this.otherD = otherD;
}
}

我需要一个由唯一字符串字段 id 索引的 Foo 对象容器。所以下面的 fooHashMap 是一个当前的解决方案:

HashMap<String, Foo> fooHashMap = null;

fooHashMap.put("bar", Foo("bar", 1, 0.3, "aa", "bb", 0.8));
fooHashMap.put("tzar", Foo("tzar", 8, 12.3, "dlj", "no rule", 0.343));
// etc.

Foo 构造函数和 hashmap 键中将 id 加倍的解决方案看起来很丑陋。 Java 8 可以提出更优雅的解决方案吗?我不是说像这样的解决方案

public void addFoo(Foo foo) { fooHashMap.put(foo.id, foo); }

最佳答案

我个人会使用您最后发布的解决方案:

addFoo(new Foo("bar", 1, 0.3, "aa", "bb", 0.8));
addFoo(new Foo("tzar", 8, 12.3, "dlj", "no rule", 0.343));

然后让 addFoo 方法处理其余部分:

public void addFoo(Foo foo) {
fooHashMap.put(foo.id, foo);
}

既然你显然必须创建 Foo 对象,我想不出更优雅的解决方案。

如果您已经有了一个 foo 对象列表,您可以像这样创建 map

Map<String, Foo> fooMap = foos
.stream()
.collect(Collectors.toMap(f -> f.id, f -> f));

关于java - 由确定字段索引的对象容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45785453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com