2013-03-05 52 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实用程序创建类似字典的数据结构(键值对)。