Map集合
发布日期:2025-04-12 01:21:17 浏览次数:9 分类:精选文章

本文共 3943 字,大约阅读时间需要 13 分钟。

Java集合系列

一、map集合的特点及遍历方式

map集合的特点

map集合是一种键值对存储的数据结构,支持快速查找和修改操作。其主要特点包括:

  • 键值对存储:通过键可以快速找到对应的值
  • 单键存储:每个键只能对应一个值
  • 无序存储:默认情况下,map集合的键值对是无序存储的
  • 灵活性:支持动态添加、删除和修改操作

map集合的遍历方式

map集合提供了两种遍历方式:

  • 通过键获取值
  • Set keys = map.keySet();
    for (Object key : keys) {
    System.out.println("键:" + key + " 对应的值:" + map.get(key));
    }
    1. 通过映射关系遍历
    2. Set
      > entrySet = map.entrySet();
      for (Map.Entry
      entry : entrySet) {
      System.out.println("键:" + entry.getKey() + " 对应的值:" + entry.getValue());
      }

      二、字符串出现次数统计

      实现思路

    3. 将字符串转换为字符数组
    4. 遍历字符数组
    5. 使用map集合记录每个字符的出现次数
    6. 最后输出字符及其出现次数
    7. 代码实现

      package com.chendongli.map;
      import java.util.HashMap;
      import java.util.Map;
      import java.util.Set;
      import java.util.Map.Entry;
      public class Demo2 {
      public static void main(String[] args) {
      String s = "asjhdfhjhsafjsjljkejrjtjttrjytj";
      Map
      map = new HashMap<>();
      char[] arr = s.toCharArray();
      for (char c : arr) {
      Integer value = map.get(c);
      if (value == null) {
      map.put(c, 1);
      } else {
      map.put(c, value + 1);
      }
      }
      Set
      > entrySet = map.entrySet();
      for (Map.Entry
      entry : entrySet) {
      System.out.println(entry.getKey() + ":" + entry.getValue());
      }
      }
      }

      扩展功能

      • 按字符排序:可以通过将map集合转换为TreeMap( TreeMap )来实现按字符出现次数的排序
      • 降序排序:可以使用自定义的Comparator来实现降序排序

      三、泛型的应用

      打印偶数

      package com.chendongli.map;
      import java.util.HashSet;
      import java.util.Set;
      public class Demo3 {
      public static void main(String[] args) {
      Set set = new HashSet<>();
      set.add(1);
      set.add(2);
      set.add(3);
      set.add(4);
      set.add(5);
      for (Object obj : set) {
      if (Integer.valueOf(obj.toString()) % 2 == 0) {
      System.out.println("打印偶数:" + obj);
      }
      }
      }
      }

      集合间的相互转换

      package com.chendongli.map;
      import java.util.ArrayList;
      import java.util.Arrays;
      import java.util.List;
      public class Demo4 {
      public static void main(String[] args) {
      String[] arr = {"a", "b", "c", "d"};
      List
      list = Arrays.asList(arr);
      list.add("e");
      System.out.println(list.size());
      }
      }

      工具类的应用

      package com.chendongli.map;
      import java.util.ArrayList;
      import java.util.Arrays;
      import java.util.Collections;
      import java.util.List;
      import java.util.Map;
      public class Demo5 {
      public static void main(String[] args) {
      List
      list = new ArrayList<>();
      list.add("b");
      list.add("c");
      list.add("a");
      System.out.println(list);
      Collections.sort(list);
      System.out.println("顺序排序:" + list);
      Collections.sort(list, (x, y) -> y.compareTo(x));
      System.out.println("倒序排序:" + list);
      }
      }

      四、自定义类的排序

      package com.chendongli.map;
      import java.util.ArrayList;
      import java.util.Arrays;
      import java.util.Collections;
      import java.util.Comparator;
      import java.util.List;
      public class Demo5 {
      public static void main(String[] args) {
      List
      list = new ArrayList<>();
      list.add(new Person("a", 18));
      list.add(new Person("c", 17));
      list.add(new Person("b", 20));
      System.out.println(list);
      Collections.sort(list);
      Collections.sort(list, (y, x) -> x.getName().compareTo(y.getName()));
      System.out.println("倒序:" + list);
      Integer[] arr = {3, 6, 9, 2, 5, 8};
      Arrays.sort(arr, (x, y) -> y - x);
      System.out.println("降序:" + Arrays.toString(arr));
      }
      }
      class Person {
      private String name;
      private int age;
      public Person(String name, int age) {
      this.name = name;
      this.age = age;
      }
      public String toString() {
      return "Person [name=" + name + ", age=" + age + "]";
      }
      }

      五、总结

      通过以上示例可以看出,Java集合在日常开发中具有广泛的应用场景。从简单的map集合到复杂的集合运算,再到泛型的灵活应用,Java为开发者提供了强大的工具箱。掌握这些内容是成为一名优秀开发者的基础。

    上一篇:Map集合中value()与keySet()、entrySet()区别
    下一篇:map遍历测试结果

    发表评论

    最新留言

    能坚持,总会有不一样的收获!
    [***.219.124.196]2025年04月27日 00时28分23秒