2011-12-05 102 views
0

我想收集分类在多个组中的数据。当我收到组的第一个项目时,我想将布尔值设置为TRUE,以指示组中是否有一些信息。分组布尔值

我的第一个方法是编写一个方法来返回我想检查的每个组的布尔值。但因为我有8组,我虽然关于给不同的范围:我定义的ENUM,创造具有ENUM关键和布尔作为值的Map:

enum dataNames{TITLE, AUTHOR, SOURCE, ELEVATION, SPEED, SATELLITES, LATITUDE, LONGITUDE}; //etc 

private Map<dataNames, Boolean> availableData; 

然后我检查的状态每个布尔调用此方法:

public boolean isDataAvailable (dataNames name){ 
     return availableData.containsKey(name); 
    } 

例如:

public void addElevationValue(double elevationValue){ 
     if(!isDataAvailable(dataNames.ELEVATION)) availableData.put(dataNames.ELEVATION, true); 
     elevacion.add(elevationValue); 
    } 

我的问题是:这是一个很好的形式给出,或者我应该留在每个布尔我想检查的方法?而...为什么? (我只想学习)

+1

为什么你不只是检查是否'elevacion'(?列表)为空或不? –

+0

您可以使用'Set '并使用集合中的存在来查看您是否拥有该集合的数据。布尔值总是为真的'Map'是不必要的。 – Gray

+0

噢,如果你要匹配Java命名标准,它应该是'DataName'(Capital D)。最后我也不推荐“s”。例如:'DataName.TITLE'。 – Gray

回答

1

为什么你需要一张地图来告诉你数据是否可用?

看起来你正在将数据存储在一个集合中,所以如果这个集合是空的,就没有可用的数据。

例如:

public void addElevationValue(double elevationValue){ 
    elevacion.add(elevationValue); 
} 

public boolean hasElevationData(){ 
    return !elevacion.isEmpty(); 
} 
+0

是的,这是可行的,但它与每个方法都有相同的方法。那么,这样做更适合做我打算做的事情吗? –

+0

由于您有单独的方法来添加不同类型的数据,因此使用单独的方法来检查不同类型的数据也是有意义的。 – dogbane