Эквивалентная функция Arduino Map в Java

Есть функция, аналогичная функции 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;
}