У меня есть небольшой Java-класс, который будет запускаться на сервере облачных приложений, поэтому он должен выполняться как можно быстрее.
Что мне нужно сделать, так это перебрать List<Map>
, получитьсодержимое текущего Map
, а затем сделать некоторую логику на нем.Map
содержит строки и двойные числа.
Это моя текущая реализация:
for (int i = 0; i < count; i++) {
Map data = result.get(i);
double priceToCheck = Double.parseDouble(data.get("value").toString());
String criteria = data.get("criteria").toString();
String coin = data.get("coin").toString();
if (coin.equals("BTC")) {
if (criteria.equals("above")) {
if (BTC > priceToCheck) {
// create notficaition
sendNotification = true;
}
} else {
if (BTC < priceToCheck) {
// create notification
sendNotification = true;
}
}
} else if (coin.equals("BCH")) {
if (criteria.equals("above")) {
if (BCH > priceToCheck) {
// create notficaition
sendNotification = true;
}
} else {
if (BCH < priceToCheck) {
// create notification
sendNotification = true;
}
}
} else if (coin.equals("ETH")) {
if (criteria.equals("above")) {
if (ETH > priceToCheck) {
// create notficaition
sendNotification = true;
}
} else {
if (ETH < priceToCheck) {
// create notification
sendNotification = true;
}
}
} else if (coin.equals("ETC")) {
if (criteria.equals("above")) {
if (ETC > priceToCheck) {
// create notficaition
sendNotification = true;
}
} else {
if (ETC < priceToCheck) {
// create notification
sendNotification = true;
}
}
} else if (coin.equals("LTC")) {
if (criteria.equals("above")) {
if (LTC > priceToCheck) {
// create notficaition
sendNotification = true;
}
} else {
if (LTC < priceToCheck) {
// create notification
sendNotification = true;
}
}
} else if (coin.equals("XRP")) {
if (criteria.equals("above")) {
if (XRP > priceToCheck) {
// create notficaition
sendNotification = true;
}
} else {
if (XRP < priceToCheck) {
// create notification
sendNotification = true;
}
}
}
Где result
это List<Map>
, "BTC"
это строка и BTC
является двойным
Как вы можете видеть наивысший уровень, если операторы проверяют строку coin
, есть шесть возможных значений.Как только coin
найден, я определяю значение criteria
, а затем сравниваю двойные числа в зависимости от значения criteria
. Мне кажется, что это очень громоздкий способ достижения этой цели.задача, это работает, но это относительно медленно.Я не могу придумать способ ускорить его без непосредственного доступа к каждому элементу Map
и проверки содержимого вручную.
У кого-нибудь еще есть идеи?