2013-03-05 58 views
2

我想製作簡單的參數值對形式(SomeClass,SomeNumber),其中第一件事是參數 第二件事是它的價值。 SomeNumber可以是整數,分數,負數等SomeClass可以是字符串,顏色或任何可以與「SomeNumber」配對的東西。Java中的簡單參數值對?

前員工和工資。 (Color.blue,0),(Color.blue,2)等等(John,19.75),(David,25.50),(Cathy,102.50) ex。

這是一個好主意嗎?如果不是爲什麼? 如果是,那麼我如何在Java中執行它?

回答

3

你所談論的是Map

將鍵映射到值的對象。地圖不能包含重複的鍵;每個鍵可以映射到最多一個值。

嘗試HashMap

Map<String,Double> myMap = new HashMap<String,Double>(); 
     |  |  
     |  | 
SomeClass SomeNumber 

myMap.put("John", 19.75); 

SomeNumber num = myMap.get("John"); 
3

我會建議使用Map實現這種類型的行爲。例如,對於您列出的員工:

Map<String, Double> employees = new HashMap<String,Double>(); 
employees.put("John", 19.75); 
employees.put("David", 25.50); 
employees.put("Cathy", 102.50); 

然後,您可以使用密鑰訪問元素。

double salary = employees.get("John"); 
+0

一個額外的問題 - 我如何根據價值對數據進行排序? – SuperStar 2013-03-05 06:31:03

0

是否這是一個好主意取決於你將如何處理它。在Java中執行此操作的最簡單方法之一是創建一個帶有兩個字段的簡單對象(如果將變量設爲專用,則可能使用getter和setter方法),一個用於字符串,另一個用於十進制值。

public class MyClass { 
    public String value1; 
    public double value2; 

    public MyClass(String v1, double v2) { 
     value1 = v1; 
     value2 = v2; 
    } 
} 
2

您可以使用一個Map<String, Double>或者你可以創建一個類來保存數據。您需要根據您要查找的功能範圍來決定實施哪種替代方案。如果你只是在尋找一個存儲機制,我會去Map,但如果你想要的東西不止這些(其他的方法等),我會去上課。

現在,您似乎正在將這些不同的「名稱」和「顏色代碼」想法合併到一個實體中。我會避免這樣做。如果使用地圖方法,我會維護兩張不同的地圖,一張用於(姓名,工資)對,另一張用於顏色代碼數據。如果您決定使用類,我會創建兩個不同的類(可能都從同一個基類繼承)來保存每組數據。不要將不相關的東西組合成一個實體!


相關文章:

1

可以使用HashMap or HashTable。有一點不同,但您可以使用概念和Java實用程序創建類似字典的數據結構(鍵值對)。