首页 新闻 搜索 专区 学院

简单的map集合,根据key 取不出 value 值,怎么回事?

0
悬赏园豆:20 [已解决问题] 解决于 2018-10-25 10:23

pd.txt 文件内容(简单的三行数据 "\t" 分割):
01 小米
02 华为
03 格力


(下面就是一个简单的 pdMap 集合 放值 后 再取值 有一点问题)

 public class DistributedCacheMapper extends 
   Mapper<LongWritable,Text,Text,NullWritable> {
        Map<String,String> pdMap=new HashMap<String,String>();

      @Override
       protected void setup(Mapper<LongWritable,Text,Text,NullWritable>.Context context) 
          throws IOException, InterruptedException {
     //获取缓存的文件
       BufferedReader reader=new BufferedReader(new InputStreamReader(new 
     FileInputStream("E:/input/Map_join/pd.txt"),"UTF-8"));
      String line;
    //获取文件 一行一行的读取
    while (StringUtils.isNotEmpty(line=reader.readLine())){
        //切割
        String [] fields=line.split("\t");
        //缓存数据到集合
        pdMap.put(fields[0],fields[1]);
        System.out.println(pdMap.toString());
        String pdName=pdMap.get("01");
        System.out.println("01对应的值:"+pdName);
    }
     reader.close();
      (省略map方法)
 }

输出的结果:
{01=小米}
01对应的值:null
{02=华为, 01=小米}
01对应的值:null
{02=华为, 03=格力, 01=小米}
01对应的值:null
{02=华为, 03=格力, 01=小米}
01对应的值:null

阿李先生的主页 阿李先生 | 初学一级 | 园豆:186
提问于:2018-10-24 22:28
< >
分享
最佳答案
0

debug看一下,查询原因
String [] fields=line.split("\t");看看这个数组有没有值

收获园豆:20
番茄先生 | 小虾三级 |园豆:911 | 2018-10-25 08:51

@奔跑的小虱子: debug是我们的好朋友

番茄先生 | 园豆:911 (小虾三级) | 2018-10-25 10:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册