package com.hadoop.io;
import java.util.Set;
import org.apache.hadoop.io.ArrayWritable;
import org.apache.hadoop.io.BooleanWritable;
import org.apache.hadoop.io.ByteWritable;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.MapWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Writable;
/**
*
* @author:戴桥冰
* 2015-10-5 下午7:14:37
*content: 该类用来展示实际使用中的包装类
*/
public class WritableStudy {
public static class IntArrayWritable extends ArrayWritable{
public IntArrayWritable() {
super(IntWritable.class);
}
}
public static void main(String[] args){
System.out.println("***************Primitive Writables******************");
BooleanWritable bool1=new BooleanWritable(true);
ByteWritable byte1=new ByteWritable((byte) 3);
System.out.printf("Boolean:%s Byte:%d\n",bool1,byte1.get());
IntWritable int1=new IntWritable(5);
IntWritable int2=new IntWritable(17);
System.out.printf("int1:%d int2:%d\n",int1.get(),int2.get());
int1.set(int2.get());
System.out.printf("int1:%d int2:%d\n",int1.get(),int2.get());
Integer int3=new Integer(19940219);
int1.set(int3);
System.out.printf("int1:%d int2:%d\n",int1.get(),int2.get());
System.out.println("\n*************Array Writable**************");
ArrayWritable array=new ArrayWritable(IntWritable.class);
array.set(new IntWritable[]{new IntWritable(1456456),new IntWritable(19941013),new IntWritable(19940219)});
IntWritable[] values=(IntWritable[]) array.get();
for(IntWritable i:values)
System.out.println("数字为:"+i.get());
IntArrayWritable intArray=new IntArrayWritable();
intArray.set(new IntWritable[]{new IntWritable(1),new IntWritable(19941013),new IntWritable(19940219)});
IntWritable[] intValues=(IntWritable[]) intArray.get();
for(IntWritable w:intValues)
System.out.println("下一组数字为: "+w.get());
intArray.set(new LongWritable[]{new LongWritable(19854646)});
System.out.println("\n******************Map Writable*********************");
MapWritable m=new MapWritable();
IntWritable key1=new IntWritable(5);
NullWritable values1=NullWritable.get();
m.put(key1, values1);
System.out.println(m.containsKey(key1));
System.out.println(m.get(key1));
m.put(new LongWritable(1000),key1);
Set<Writable> keys=m.keySet();
for(Writable w:keys){
System.out.println(w.getClass());
}
}
}
结果如下所示: