2013-10-23 31 views
0

我有一個名爲Machine類定義爲:HashMap中找到()與陣列

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"); 

我的問題是:我怎樣才能做到這一點,但與array? 例如,我想foundit.add(someArray)然後我通過使用方法find();搜索此數組中的某個項目我希望你明白我的意思。有任何想法嗎?

+0

是班上的''屬性name' Machine'同爲重點,以在其上存儲 – shikjohari

回答

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]) 
} 
+0

謝謝,我的想法,它幫助! – Ernusc

+0

@Ernusc很高興聽到它。不用謝!.. – Prabhakaran

0

你就可以創建

void addAll(Machine[] machines) 

的方法,並在其實施,你從這個數組添加所有元素融入哈希表。

0

添加方法

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

,並實現它們在你的類

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"); 
    } 

} 
+0

尼斯地圖,但如果我有,例如很多項目(1000等)和i只需要找到一個項目。 hashmap比equals方法更適合嗎?我假設你不需要比較所有的元素,你只需要檢查你的特定項目的哈希碼。不是嗎? :) – Ernusc