HashMap 分拣存储 实现一对多映射

484 查看

在我们的印象中,Map k,v 映射,一对一的比较多,下面主要讲一对多的关系映射,主要需求在于,需要把很多的,杂乱的数据 按照不同的类型进行分类处理,A,B,C类型的数据进行分类统计
比如,计算字母/单词出现的次数
String str = "t/h/is/is/a/car/a/n/d/t/ha/t/is/tr/uck/a/nd/w/h/e/r/e/is/t/he/s/t/uffs";

String [] str =
              "t/h/is/is/a/car/a/n/d/t/ha/t/is/tr/uck/a/nd/w/h/e/r/e/is/t/he/s/t/uffs".split("/");
      Map<String,Integer> map 
              = new HashMap<String,Integer>();
      for(String key:str){
          //方法1
          //检查map里面是否存在这个单词,如果不存在 说明之出现一次
//          if(!map.containsKey(key)){
//              map.put(key, 1);
//          }else{
//              map.put(key, map.get(key)+1);//存在 就在前面的基础上面+1 计算出现的次数
//          }
          //方法2
          Integer value = map.get(key);
          if(value == null){
              map.put(key, 1);
          }else{
              map.put(key, value+1);
          }
      }
      Set<String> keySet = map.keySet();
      Iterator<String>it = keySet.iterator();
      while(it.hasNext()){
          String key = it.next();
          Integer value = map.get(key);
          System.out.println(key+"-->"+value);
      }
    }

当然,这里的value也可以是对象,对于不同的场景 进行灵活的应用。