是否有与Arduino for Java中的Map函数类似的函数?
我需要将一系列值映射到另一个值范围,所以我想知道在Java中是否有类似的东西,我一直在搜索,但我只获得了Java的Map函数。
答案 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;
}