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

あなたが配列でこれを求めたので、私は配列でそれを試しました。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 に答える