有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带有数组的java HashMap find()

我有一个名为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) 个答案

  1. # 1 楼答案

    既然你要求用数组来做这个,我就用数组来做了。但我更愿意建议使用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");
        }
    
    }
    
  2. # 2 楼答案

    添加方法

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

    并在课堂上实施

  3. # 3 楼答案

    您可以创建如下方法

    void addAll(Machine[] machines)
    

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

  4. # 4 楼答案

    你的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])
    }