MapReduce规定天气数据并其输出4

紧接上一篇内容
上一篇我们在map阶段所使用的思路是用JsonObject中的getStirng的方法,然后得到了他们对应的值,然后我们用再用Stringbuffer这个类的一些功能,使用循环,然后让这些获得的字符串,然后进行拼接,最后得到指定数据
现在让我们尝试换种思路,就是我们不用StringBuffer的方法,我们直接就是用String字符串的相加
要想实现这个思路,我们肯定是要借助我们的for循环来实现字符串的拼接,这里有个问题就是你的循环的主体是谁,这时候就要考虑,我们取出开的是什么,每一个json数据对应的值。相对于目标数据,他们之间缺少“,”,所以我们要循环的就是每一个字符串还有“,”,使其能够成功的拼接,这里还有一个问题就是我们循环后产生的结果是否是我们的目标的数据呢,如果不是我们该怎么处理,要是你在此时在你的循环后,直接输出你循环后的字符串,你就会发现,在每一个数据的方法后面都有一个“,”,多出来了一个,该如何处理呢,这个时候想想你处理的数据是什么,Stirng字符串,然后这个时候你就老老实实的看看api,看看有没有对应的方法,能帮你处理了这个问题吗
在这里插入图片描述

对于String类,他有一个SubString的方法,这个方法,他的作用就是截取用的,两个参数的是,留下两个参数的截取内容,一个参数的是去掉0到这个参数范围内的内容
这样,去掉这个“,”的方法也有了,还有一个情况,你得考虑清楚,万一你处理的这行数据最后不是“,”,所以这里还得做个判断,判断最后一个字符是否是“,”
大致思路以及需要解决的问题所需要的方法,都已经基本全了,接下来就是代码了
这里我是将这部分代码给封装成了一个方法,传过来的是String类型的数据,传出去是Text类型的数据

public Text text1(String line){

        JSONObject jsonObject=JSONObject.fromObject (line);
        String [] words=new String[5];
        words[2]=jsonObject.getString ("city");
        words[0]=jsonObject.getString ("date");
        words[3]=jsonObject.getString ("weather");
        words[1]=jsonObject.getString ("temp");
        words[4]=jsonObject.getString ("wind");

        String s1="";

        for (int i=0;i<words.length;i++){
            s1+=words[i]+",";

        }

        if (s1.substring (s1.length ()-1).equals (",")){
            s1=s1.substring (0,s1.length ()-1);
        }

        k.set (s1);


        return k;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值