簡體   English   中英

在JAVA中存儲鍵值對的最佳實踐

[英]Best Practice to store KEY-VALUE pairs in JAVA

我想在代碼中存儲以下數據以進行比較

基本方向 程度方向

 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 

要么

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中存儲此類二維數組數據信息的最佳方法是什么? 作為ressrc

注意:-

  • 不想創建數據庫。
  • 我了解這些屬性,然后為這些屬性創建getter setter,然后為其創建清單。
  • 我知道哈希圖。

我只是很好奇,存儲這種恆定數據的最佳方法是什么?

我不知道確切,但您可以使用類似的方法,

來自Java 6的NavigableMap 。它具有ceilingEntry()floorEntry()函數。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM