map.entrySet() 和 map.containsKey()

本文深入讲解了Java中Map集合的使用方法,特别是如何通过keySet()方法获取Map中所有键的Set集合,并利用迭代器遍历这些键及其对应的值。同时,通过实例演示了map.containsKey()方法的使用,用于判断Map集合是否包含特定的键。

set<String> keySet= map.entrySet() :将map集合的key返回给set集合

  public void test111(){

        Map<String, String> map = new HashMap<String, String>();
        map.put("01", "zhangsan");
        map.put("02", "lisi");
        map.put("03", "wangwu");
        //先获取map集合的所有键的Set集合,极为map中所有key值的集合
        Set<String> keySet = map.keySet();
        //有了Set集合,就可以获取其迭代器。
        Iterator<String> it = keySet.iterator();
     /*   while (it.hasNext()) {
            String key = it.next();
            //有了键可以通过map集合的get方法获取其对应的值。
            String value = map.get(key);
            //获得key和value值
            System.out.println("key: " + key + "-->value: " + value);
        }*/

          for (String key :keySet){
              if(map.containsKey(key)){
              System.out.println(key);
              }
          }

    }

结果:

01
02
03

map.containsKey()用来判断map集合是否包含这个键key,如果包含则为true,否则为false。

public static void main(String[] args) {
  Map map = new HashMap();       //定义Map对象
  map.put("iphone", "苹果手机");      //向集合中添加对象
  map.put("OnePlus", "一加手机");
  map.put("oppo", "oppo手机");
  map.put("time", new Date()); 
  String key = "XR"; 
  boolean contains = map.containsKey(key);    //判断是否包含指定的键值
  if (contains) {         //如果条件为真
   System.out.println("在Map集合中包含键名" + key); //输出信息
  } else {
   System.out.println("在Map集合中不包含键名" + key);
  }
}

结果:

在Map集合中不包含键名XR

 

 

任务描述 本关任务:编写一个能计算一段文本内容中出现单词的次数的降序排列的小程序。 相关知识 为了完成本关任务,你需要掌握: 1.如何统计相同单词的次数; 2.如何进行排序。 统计相同单词的次数 //使用map集合进行存储 String s="Day by Day"; Map<String,Integer> map=new HashMap<String,Integer>(); StringTokenizer tokenizer=new StringTokenizer(s); int count;//记录次数 String word;//单个单词 while(tokenizer.hasMoreTokens()){ word=tokenizer.nextToken(" "); if(map.containsKey(word)){ //拿到之前存在map集合中该单词的次数 count=map.get(word); map.put(word, count+1); }else{ map.put(word, 1); } } Set<Entry<String, Integer>> entrySet = map.entrySet(); for (Entry<String, Integer> entry : entrySet) { System.out.println(entry.getKey()+"-"+entry.getValue()); } 输出: by-1 Day-2 如何进行排序 使用Collections包装类。它包含有各种有关集合操作的静态多态方法。 //可根据指定比较器产生的顺序对指定列表进行排序。 Collections.sort(List<T> list, Comparator<? super T> c) 示例如下: //以上实例中的map集合为例 将map集合的每一项添加进list集合中 List<Map.Entry<String, Integer>> infos = new ArrayList<Map.Entry<String, Integer>>(map.entrySet()); Collections.sort(infos, new Comparator<Map.Entry<String, Integer>>() { public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { //前者-后者 升序 后者-前者 降序 return (o2.getValue() - o1.getValue()); } }); 输出: Day-2 by-1 编程要求 请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下: 将指定文本(可以通过右侧文件目录下的src/step3/readme.txt查看)以降序的方式输出每个单词出现的次数。 测试说明 补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。 预期输出: 参考右边测试集中的输出。 package step3; import java.util.Map; import java.util.HashMap; import java.util.StringTokenizer; public class StudentDemo{ //获取单词的数量 public Map<String, Integer> getWordCount(String str) { Map<String, Integer> map = new HashMap<String, Integer>(); //请在此添加实现代码 /********** Begin **********/ StringTokenizer tokenizer = new StringTokenizer(str); while (tokenizer.hasMoreTokens()) { String word = tokenizer.nextToken(); map.put(word, map.getOrDefault(word, 0) + 1); } // 2.map 转换为 List 以便排序 java.util.List<Map.Entry<String, Integer>> list = new java.util.ArrayList<>(map.entrySet()); // 3. 对 List 进行降序排序 java.util.Collections.sort(list, new java.util.Comparator<Map.Entry<String, Integer>>() { @Override public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { return o2.getValue().compareTo(o1.getValue()); } }); // 4. 创建一个 LinkedHashMap 来存储排序后的结果 Map<String, Integer> sortedMap = new java.util.LinkedHashMap<>(); for (Map.Entry<String, Integer> entry : list) { sortedMap.put(entry.getKey(), entry.getValue()); } // 5. 将 sortedMap 赋值给原始的 map 引用 map = sortedMap; /********** End **********/ return map; } }
11-20
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值