2015-01-15 55 views
0

對象變量值獲取對象我有Kvote類是這樣的:通過Java中

public class Kvote { 
    private static int counter = 0; 
    private double[] vrednost = new double[3]; 
    private int id; 

    public Kvote(double v1, double v2) { 
     super(); 
     this.vrednost[1] = v1; 
     this.vrednost[2] = v2; 
     this.id = counter; 
     counter++; 

    } 

    public static int getCounter(){ 
     return counter; 
    } 
} 

我在主創建該類的幾個對象:

Kvote k1 = new Kvote(2, 4.25); 
Kvote k2 = new Kvote(1.85, 5); 
Kvote k3 = new Kvote(1.62, 6.5); 
Kvote k4 = new Kvote(1.72, 6); 

所以,類Kvote的每個實例有一些id,對於k1是0,對於k2是1,對於k3是2 ... 是否有可能通過它的id var值訪問對象。例如,如果我問Id = 2的對象,我得到的對象K3 ...

我很難解釋爲什麼我需要這個,但我這樣做。基本上,我alghorytm需要與類Kvote對象的無限數量的工作:K1,K2,K3,K4,K5,K6,K7 ....

+4

嘗試將項目添加到使用ID作爲鍵的地圖,請參閱下面的我的答案 – roeygol 2015-01-15 18:37:51

+1

它工作。謝謝。 – user3362334 2015-01-15 18:49:04

回答

2

試試這個:

HashMap<Integer, Kvote> map = new HashMap<Integer, Kvote>(); 
put(k1.getId(), k1); 
put(k2.getId(), k2); 
put(k3.getId(), k3); 
put(k4.getId(), k4); 

然後使用地圖以獲得值的ID如:

map.get(2) => k3 

此外,您將需要添加getId()函數Kvote類。

1

如果你只是按順序給它們ID,那麼你可以使用一個ArrayList。

List<Kvote> myList = new ArrayList<Kvote>(); 
myList.add(new Kvote(2, 4.25)); 
myList.add(new Kvote(1.85, 5)); 
myList.add(new Kvote(1.62, 6.5)); 
myList.add(new Kvote(1.72, 6)); 

並訪問對象,只是這樣做:

myList.get(3); // returns the 4th item in the list 

但是,如果你想有什麼你的ID是,那麼你可以使用地圖,因爲@RoeyGolzarpoor提出了更大的靈活性在他的回答中。

0

A java.util.Map是支持鍵值對的最常見數據結構之一。有多種實現可用,其中之一是java.util.HashMap

它的工作原理是這樣的:

Map<Integer, Kvote> kvotes = new HashMap<>(); 

// Save it in the Map 
Kvote kvote = new Kvote(123D, 213D); 
kvotes.put(kvotes.getId(), kvote); 

// Retrieve the kvote 
Kvote kvote = kvotes.get(123); 

HashMap提供快速訪問你的元素,你也可以遍歷可用的鍵,值或條目。

// Print the kvotes 
kvotes.values().stream().forEach(System.out.println(kvote.toString())); 

我要保留在其中添加元素的順序(algorithmical目的)我建議你使用LinkedHashMap將能夠記住爲了讓您。 HashMap確實是而不是持有訂單。

0

我不確定你想要什麼結果,認爲羅伊的地圖解決方案是好的,我只是補充說,而不是有類內計數器,有一個櫃檯外,並將其值傳遞給構造函數來設置ID內實例化的價值:

public class Kvote { 

private double[] vrednost = new double[2]; 
private int id; 

public Kvote(double v1, double v2, int id) { 
    this.vrednost[0] = v1; 
    this.vrednost[1] = v2; 
    this.id = id; 
} 

public static int getId(){ 
    return this.id; 
} 
} 

在主類:

int counter = 0; 

Kvote k1 = new Kvote(2, 4.25, counter++); 
Kvote k2 = new Kvote(1.85, 5, counter++); 
Kvote k3 = new Kvote(1.62, 6.5, counter++); 
Kvote k4 = new Kvote(1.72, 6, counter++); 

然後把他們在地圖上。