【发布时间】:2011-07-08 07:08:17
【问题描述】:
我有两个班级,Foo 和 Bar。每个 Foo 都有一个名称和一堆项目。 Bar 包含一堆 Foo,每个都有一个唯一的名称。
Bar 有一个方法 AddEntry,它接受一个 fooName 和一个项目 (1) 如果具有 fooName 的 foo 已经在 Bar 中,则将另一个项目添加到 Foo 或 (2) 如果具有 fooName 的 foo 不在 Bar 中, 创建一个具有该名称的 Foo 并将该项目添加到新的 Foo 中。
这是我如何实施的大纲。有没有更好的办法?我只是在学习Java,但这似乎很笨拙
class Foo { // a name and some items
String fooName;
List<Object> items = new ArrayList<Object>;
Foo(name) {...} // create a named Foo
AddtoFoo(item) {...} // add an item to this Foo
}
class Bar { // a bunch of foo's
List<Foo> fooList = new Arraylist<Foo>;
void AddEntry(String fooName, Object item) {
boolean member = false;
for(Foo foo : fooList){
if{foo.name == fooName) {
member = true;
foo.AddtoFoo(item); // adds an item to this foo
break;
}
}
if(member == false) {
Foo foo = new Foo(fooName); // creates a named foo
foo.AddtoFoo(item); // adds the item
fooList.add(foo); // maintain our list of foo's
}
}
}
【问题讨论】:
-
你应该使用
foo.name.equals(fooName)比较String的相等性 -
你的例子是完整的,还是仅仅是一个表示?如果它完成了,您可以使用 Map
> 来存储所有内容,然后使用 map 上的 contains 方法添加项目。 -
这是一个表示,但关键是Bar包含一个Foos列表,每个Foos都有一个名称和一个项目列表。
-
标签: java collections