package org.apache.mahout.clustering.conversion;
目的:读取输入转换成vector输出
private static final Pattern SPACE = Pattern.compile(" ");
private Constructor<?> constructor;
用反射加载vector类
Configuration conf = context.getConfiguration();
String vectorImplClassName = conf.get("vector.implementation.class.name");
Class<? extends Vector> outputClass = conf.getClassByName(vectorImplClassName).asSubclass(Vector.class);
constructor = outputClass.getConstructor(int.class);
正则按空格拆开,装入double链表,处理了连续空格情况
String[] numbers = InputMapper.SPACE.split(values.toString());
Collection<Double> doubles = new ArrayList<Double>();
for (String value : numbers) {
if (value.length() > 0) {
doubles.add(Double.valueOf(value));
}
}
建立vector,用writeable包装,key为vector的长度,value为vector写出
Vector result = (Vector) constructor.newInstance(doubles.size());
int index = 0;
for (Double d : doubles) {
result.set(index++, d);
}
VectorWritable vectorWritable = new VectorWritable(result);
context.write(new Text(String.valueOf(index)), vectorWritable);
分享到:
相关推荐
这个工具的目的是提高代码的可维护性和可测试性,通过分离业务逻辑和数据处理。 **1. 域对象(Domain Objects)** 域对象是业务逻辑的核心,它们代表了应用中的特定概念或实体。在`laravel-domain-input-mapper`中...
在分析输入事件的处理流程时,不仅需要关注framework层的代码,还需要了解Linux内核中如何处理输入事件。在Android 4.0中,多点触摸驱动已经成熟,但在系统层面上进行校准程序的编写则相对复杂,需要考虑到系统UI...
在 Android 4.0 中,TouchScreen 功能在移植到 Android 4.0 后不能正常工作了,这是因为 Android 4.0 中的 Event Input 系统的地位提高了,EventHub 成为系统中所有事件的中央处理站,并且 EventHub 的代码也发生了...
为了将自制的Arduino游戏杆与Steam兼容,我们需要确保设备符合Steam的控制器标准,或者使用第三方软件(如InputMapper)进行适配。此外,我们还需要了解USB通信协议,因为大多数现代游戏控制器都是通过USB接口与电脑...
* InputReader:InputReader 从 EventHub 中读取原始事件数据(RawEvent),并由各个 InputMapper 处理之后输入对应的 input listener。InputReader 拥有一个 InputMapper 集合,并拥有一个 EventHub 对象,但这个...
InputMapper::process( 这里 是KeyboardInputMapper) InputReader::createDeviceLock ed中根据类型创建的,负责处理轨迹 球事件的TrackballInputMapper 对 象以及负责处理触摸屏事件的 TouchInputMapper 对象等 ...