Есть функция, аналогичная функции Map в Arduino для Java?
Мне нужно сопоставить диапазон значений с другим диапазоном значений, поэтому мне было интересно, есть ли что-то подобное в Java, я искал, но я получаю только функцию Java Map.
Ответ 1
Код map() из библиотеки Arduino:
long map(long x, long in_min, long in_max, long out_min, long out_max)
{
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
Это будет работать на Java одинаково - нет настоящей магии. Но стандартная Java не имеет ничего предопределенного.
Ответ 2
У, Java не имеет функции "Карта", у нее есть тип карты в коллекциях (java.util) с несколькими реализациями. Но это всего лишь механизм хранения, в основном приводящий пары ключ => значение. Основываясь на моем чтении документов Arduino, которые вы связали, вам необходимо реализовать свой собственный метод для сопоставления значения соответствующим образом.
Ответ 3
Вы могли бы сделать что-то вроде этого:
Map<K,V> mapValues(Collection<K> keys, Collection<V> values) {
if(keys.size() != values.size()) throw new ... // pick your poison there
Map<K,V> map = new HashMap<K,V>();
Iterator<K> keyIter = keys.iterator();
Iterator<V> valIter = values.iterator();
while(keyIter.hasNext()) {
K key = keyIter.next();
V val = valIter.next();
map.put(key,val);
}
return map;
}