0

我有一个名为的类Machine定义为:

class Machine
{
  private String name;

  Machine() { name = null; }

  // set , get methods of String name

}

我还有一个名为MachineAtt实现接口的Att类,例如:

// Att interface 
 interface Att
  {
   void add(Machine obj);
   Machine find(String name)
  }

// MachineAtt class
class MachineAtt implements Att
 {
   protected Map<String,Machine> hashTable = new HashMap<String,Machine>();

  // ovveride methods from interface Att
  }

主要功能是:

Machine car = new Machine();
car.setName("MB");
//create an object of MachineAtt
MachineAtt foundit = new MachineAtt();

foundit.add(car);
foundit.find("MB");

我的问题是:我怎么能做同样的事情,但有一个数组?例如,我想foundit.add(someArray)然后我通过使用方法搜索这个数组find();中的某个项目,希望你明白我的意思。有任何想法吗?

4

4 回答 4

1

你的 addAll(Machine[] machines)方法是这样的。

void addAll(Machine[] machines){
     for(Machine m:machines){
         add(m); 
     }
}

你的findAll(String[] names)方法是这样的。

Machine[] findAll(String[] names){
     ArrayList<Machine> machines =new ArrayList<ArrayList>();
      for(String s:names){
         Machine m  = find(s); 
         if(m!=null){
             machines.add(m);
         }
     }
     return machines.toArray(new Machine[0])
}
于 2013-10-23T11:28:53.927 回答
0

您可以创建一个类似的方法

void addAll(Machine[] machines)

并在其实现中,将此数组中的所有元素添加到哈希表中。

于 2013-10-23T11:09:51.767 回答
0

添加方法

void add(Machine[] arr);
Machine[] find(String[] names);

并在你的课堂上实现它们

于 2013-10-23T11:10:35.340 回答
0

既然你用数组问这个,我就用数组试过了。但我宁愿建议使用 an ArrayList,因为它是动态的,并且插入和搜索也快速简单。没关系尝试以下代码段。

class Machine
{
  private String name;
  public void setName(String name) {
    this.name = name;
}
  public String getName() {
    return name;
}
  Machine() { name = null; }
}

interface Att
{
 void add(Machine obj);
 Machine find(String name);
}

//MachineAtt class
class MachineAtt implements Att
{
 protected Machine[] arr = new Machine[10];


@Override
    public void add(Machine obj) {
        for(int i = 0; i<arr.length;i++ )
        {
            if(arr[i]==null)
                arr[i] = obj;
        }

    }
@Override
    public Machine find(String name) {
    Machine mac = null; 
    for(int i = 0;i<arr.length;i++)
        {
            if(arr[i].getName().equals(name))
                mac = arr[i];
        }
        return mac;
    }
}


public class TEst {

    public static void main(String[] args) {
        Machine car = new Machine();
        car.setName("MB");
        //create an object of MachineAtt
        MachineAtt foundit = new MachineAtt();

        foundit.add(car);
        foundit.find("MB");
    }

}
于 2013-10-23T11:26:03.033 回答