0
public Table findTable(Container container, String name) {
        Iterator<Table> tableFinder = container.getTables().iterator();

        while(tableFinder.hasNext()){
            if (tableFinder.equals(name)){
                return table;
            } else {
                return null;
            }
        }
    }

所以基本上这个方法应该container通过检查它的一个属性来搜索对象中的一个表,tables这是一个集合。它应该通过name属于的属性找到对象Table。通常,我只会插入一个 type 的参数table,这样会更容易找到它,但我得到的线框特别指出它必须是这种方式。

我有 hashcode() 和 equals() 作为表的方法,我知道我需要以某种方式使用它们,但是我不确定如何执行此操作。另一个问题是我需要返回一个表,如果没有 Table 的实例,我不知道该怎么做,所以我知道返回表会出错。基本上,我需要知道的是如何搜索name以及如何将表格从集合中取出以获得有效的回报。

4

3 回答 3

2

这需要jdk 1.5+:

public Table findTable(Container container, String name) {
    for (Table table : container.getTables()) {
        if (table.getName().equals(name)) {// assume you have a getName() method on Table to get table name
            return table;
        }
    }
    return null;
}
于 2013-10-20T00:53:21.730 回答
0

您当前每次都将迭代器对象与字符串“名称”进行比较。你应该做这样的事情:

if (name.equals(tableFinder.next().getName())
于 2013-10-20T00:45:29.920 回答
0

if (tableFinder.equals(name)){

您正在调用equals迭代器对象,这不是您真正想要的。相反,您想与Table每个循环中指向的迭代器进行比较。要获取该对象,您需要在迭代器对象上调用Iterator#next()方法。

Table table = tableFinder.next();
if (table.equals(name)){ // assuming that your equals implementation 
                         // compares with the property name of table
于 2013-10-20T00:51:44.920 回答