public class FlowMapper extends Mapper<LongWritable, Text, Flowbean, Text>{
TreeMap<Flowbean, String> m=new TreeMap<Flowbean, String>();
@Override
protected void map(LongWritable key, Text value,Context context)
throws IOException, InterruptedException {
//获取行
String lineString=value.toString();
//切割
String []splitsStrings=lineString.split("\t");
//赋值给bean对象
String phonenum=splitsStrings[0];
String upstring=splitsStrings[1];
String downString=splitsStrings[2];
String sum=splitsStrings[3];
Text keyText=new Text(phonenum);
Flowbean valuefFlowbean=new Flowbean();
valuefFlowbean.set(Long.parseLong(upstring), Long.parseLong(downString));
valuefFlowbean.setFlow_sum(Long.parseLong(sum));
//将对象加入treeMap
m.put(valuefFlowbean, phonenum);
if (m.size()>10) {
m.remove(m.lastKey());
}
为什么明明在最后判断了m.size()>10,可m.remove(m.lastKey())就是不会触发,导致输出的全部结果输出 而不是前10 |
|