在JAVA中存储KEY-VALUE对的最佳实践

时间:2014-04-18 10:01:56

标签: java android

我想在Code

中存储以下数据以进行比较
  

基本方向 学位方向

N                348.75 - 11.25
NNE              11.25 - 33.75
NE               33.75 - 56.25
ENE              56.25 - 78.75
E                78.75 - 101.25
ESE              101.25 - 123.75
SE               123.75 - 146.25
SSE              146.25 - 168.75
S                168.75 - 191.25
SSW              191.25 - 213.75
SW               213.75 - 236.25
WSW              236.25 - 258.75
W                258.75 - 281.25
WNW              281.25 - 303.75
NW               303.75 - 326.25
NNW              326.25 - 348.75

OR

500   chance_of_rain
600   chance_of_snow
960   chance_of_storm
801   cloudy
615   flurries
741   fog
721   haze
611   icy
701   mist
804   mostly_cloudy
800   mostly_sunny
803   partly_cloudy
500   rain
711   smoke
601    snow   
960   storm
800   sunny
200   thunderstorm

在Android中存储此类 2-D数组数据信息的最佳方式是什么?要么是 res ,要么是 src

注意: -

  • 不想创建数据库。
  • 为这些属性创建getter setter然后制作这个POJO的列表是我所知道的,并且我也遵循相同的。
  • Hash MAP我知道。

我只是好奇什么是存储这种常量数据的最佳方式?

2 个答案:

答案 0 :(得分:2)

我不确切知道,但你可以使用像

这样的东西 来自Java 6的

NavigableMap。其中有ceilingEntry()floorEntry()个函数。

答案 1 :(得分:2)

private static final String[] DIRECTIONS = {
    "N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE",
    "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"
};

String degreeToName(double degree) {
    int corner = (int)((degree + 11.25) / 22.5) % 16; // Or % DIRECTIONS.length
    return DIRECTIONS[corner];
}

String degreeToRange(double degree) {
    int corner = (int)((degree + 11.25) / 22.5) % 16; // Or % DIRECTIONS.length
    double lowerBound = corner * 22.5 - 11.25 + (corner == 0 ? 360 : 0);
    double upperBound = corner * 22.5 + 11.25;
    return String.format("%.2f - %.2f", lowerBound, upperBound);
}

计算似乎最适合。

根据情况强化代码:

while (degree < 0) degree += 360;

为了完整起见,添加了degreeToRange