Java中的Arduino Map等效函数

时间:2011-09-21 20:09:45

标签: java map range arduino

是否有与Arduino for Java中的Map函数类似的函数?

我需要将一系列值映射到另一个值范围,所以我想知道在Java中是否有类似的东西,我一直在搜索,但我只获得了Java的Map函数。

3 个答案:

答案 0 :(得分:23)

Arduino图书馆的map()代码如下:

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没有像这样的预定义。

答案 1 :(得分:2)

呃,Java没有'Map'功能,它在Collections(java.util)中有一个Map类型,有多个实现。但这只是一种存储机制,基本上会产生key =>值对。根据我对您链接的Arduino文档的阅读,您需要实现自己的方法来适当地映射值。

答案 2 :(得分:-4)

你可以这样做:

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;
}