[英]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中存儲此類二維數組數據信息的最佳方法是什么? 作為res或src
注意:-
我只是很好奇,存儲這種恆定數據的最佳方法是什么?
我不知道確切,但您可以使用類似的方法,
來自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.