J2EE集合框架之Map

简介: J2EE集合框架之Map

J2EE集合框架之Map

1.什么是Map集合

1.1 概述:

  • Map是一种键值对(key-value)的集合,Map集合中每一个元素都包含一个键对象和一个值对象,其中键Key对象不允许重复,而值Value对象可以重复。
  • Map集合没有继承Collection接口,其提供的是key到value的映射,Map中不能包含相同的key值,每个key只能影射一个相同的value,key值还决定了存储对象在映射中的存储位置。

1.2 图解:

1.3 Map集合和Collection集合的区别:

  • 数据结构:Collection集合主要是由一组单一类型的对象构成,而Map集合是由键值对(key-value)构成的对象组成。
  • 元素的排序:Collection集合中的元素是无序的,而Map集合的键值对是按照某种顺序进行排列的。
  • 元素的访问方式:Collection集合只能按照特定的顺序依次读取元素,而Map集合可以通过键直接访问元素。
  • 元素的重复:Collection集合中允许有重复的元素,而Map集合不允许有重复的键。
  • 方法:Collection集合主要包括增加、删除、修改、查找等操作方法,而Map集合除此之外还包括获取键、获取值、获取键值对等相关方法。

**总结:**相比较两种集合类型,Collection集合更适合和与存储较为简单的数据对象,这样的话可以大大提高开发效率;而相对于Map集合更适合保存键值对(key-value)这种特殊形式的数据,对于这种特殊形式数据的话Map更方便。

2. Map集合的遍历方式:(未包括泛型)

2.1 先获取map集合的所有key再获取值

package com.YX.Map;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Demo1 {
  public static void main(String[] args) {
    Map map = new HashMap<>();
    map.put(1, "君易");
    map.put(2, "木易");
    map.put(3, "栀龍");
    // 1.先获取map集合的键,在获取值
    Set keyset = map.keySet();
    for (Object key : keyset) {
      System.out.println("key:" + key + ";value=" + map.get(key));
    }
  }
}

输出结果

2.2 得到map集合的映射关系

package com.YX.Map;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class Demo1 {
  public static void main(String[] args) {
    Map map = new HashMap<>();
    map.put(1, "君易");
    map.put(2, "木易");
    map.put(3, "栀龍");
    // 2.得到map集合的映射关系
    Set entrySet = map.entrySet();
    for (Object object : entrySet) {
      Map.Entry entry = (Entry) object;
      System.out.println(entry.getKey() + ":" + entry.getValue());
    }
  }
}

输出结果:

3.Map集合的遍历方式:(包括泛型)

3.1 增强for循环遍历(foreach)

package com.YX.Map;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
public class Demo2 {
  public static void main(String[] args) {
    Map<Integer, String> map = new HashMap<>();
    map.put(1, "君易");
    map.put(2, "木易");
    map.put(3, "栀龍");
//    1.foreach遍历
    for (Map.Entry<Integer, String> entry : map.entrySet()) {
        System.out.println(entry.getKey() + ": " + entry.getValue());
    }
  }
}

输出结果

3.2 迭代器遍历iterator

package com.YX.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
public class Demo2 {
  public static void main(String[] args) {
    Map<Integer, String> map = new HashMap<>();
    map.put(1, "君易");
    map.put(2, "木易");
    map.put(3, "栀龍");
     1.foreach遍历
    // for (Map.Entry<Integer, String> entry : map.entrySet()) {
    // System.out.println(entry.getKey() + ": " + entry.getValue());
    // }
    // 2.迭代器遍历
    Iterator<Entry<Integer, String>> it = map.entrySet().iterator();
    while (it.hasNext()) {
      System.out.println(it.next());
    }
  }
}

输出结果

3.3 遍历键、值、或者键值对的集合:

package com.YX.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
public class Demo2 {
  public static void main(String[] args) {
    Map<Integer, String> map = new HashMap<>();
    map.put(1, "君易");
    map.put(2, "木易");
    map.put(3, "栀龍"); 
//    3.遍历键、值、或者键值对的集合:
//    可以使用Map集合的keySet()、values()、entrySet()方法获得键、值、或者键值对的集合,然后使用for-each循环或迭代器遍历。
    // 遍历键值对
    for (Map.Entry<Integer, String> entry : map.entrySet()) {
        System.out.println(entry.getKey() + ": " + entry.getValue());
    }
  }
}

输出结果

4. Map集合的基本使用(增删改查)

package com.YX.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
public class Demo3 {
  public static void main(String[] args) {
    Map<Integer, String> map = new HashMap<>();
    map.put(1, "君易");
    map.put(2, "木易");
    map.put(3, "栀龍");
    // 原来数据
    for (Map.Entry<Integer, String> entry : map.entrySet()) {
      System.out.println(entry.getKey() + ": " + entry.getValue());
    }
    // 根据对应的键来覆盖对应的值。
    map.put(1, "俊逸");
    // 修改后的结果
    System.out.println("修改后的=======================================================================");
    for (Map.Entry<Integer, String> entry : map.entrySet()) {
      System.out.println(entry.getKey() + ": " + entry.getValue());
    }
  }
}

修改后输出集合的结果

package com.YX.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
public class Demo3 {
  public static void main(String[] args) {
    Map<Integer, String> map = new HashMap<>();
    map.put(1, "君易");
    map.put(2, "木易");
    map.put(3, "栀龍");
    // 原来数据
    for (Map.Entry<Integer, String> entry : map.entrySet()) {
      System.out.println(entry.getKey() + ": " + entry.getValue());
    }
    // 根据对应的键来删除对应的数据。
    map.remove(1);
    // 删除后的结果
    System.out.println("删除后的=======================================================================");
    for (Map.Entry<Integer, String> entry : map.entrySet()) {
      System.out.println(entry.getKey() + ": " + entry.getValue());
    }
  }
}

输出结果

5.Map集合的综合运用(统计字符串中的字符出现的次数)

package com.YX.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
public class Demo3 {
  public static void main(String[] args) {
    // 定义一个字符串
    String str = "fghjhbvsccsc";
    // 截取每一个字符到字符数组中
    char[] charArray = str.toCharArray();
    // 存放字符与出现次数对应关系的Map集合容器
    Map<Character, Integer> map = new HashMap<Character, Integer>();
    for (char c : charArray) {// foreach遍历字符数组
      Integer val = map.get(c);//定义变量代表出现次数
      if (val != null) {//判断次数不能为空
        map.put(c, val + 1);//如果字符重复了则该次数加1
      } else {
        map.put(c, 1);//如果字符没重复则次数默认为1。
      }
    }
//    遍历Map集合
    for (Entry<Character, Integer> entry:map.entrySet()) {
      System.out.println(entry.getKey()+"出现了"+entry.getValue()+"次");
    }
  }
}

显示结果

**总结:**先将一个字符串截取一个个的字符存储在字符数组中,然后定义一个Map集合存储对应的字符和出现的次数,其次遍历字符数组判断截取的每一个字符是否重复出现,如果有重复出现的则将次数+1,若没有则将次数默认设置为1。

目录
相关文章
|
6月前
|
存储 开发框架 算法
J2EE集合框架之Set
J2EE集合框架之Set
36 0
|
7月前
|
存储 安全
J2EE&集合框架&Map
J2EE&集合框架&Map
|
7月前
|
开发框架
J2EE集合框架之set
J2EE集合框架之set
15 0
|
6月前
|
安全 Java 编译器
JavaEE集合框架之Map
JavaEE集合框架之Map
37 0
|
7月前
|
开发框架
J2EE基础(集合框架之Set)
J2EE基础(集合框架之Set)
24 0
|
7月前
|
存储 安全 容器
J2EE&集合框架&Set
J2EE&集合框架&Set
|
6月前
|
开发框架
J2EE集合框架(set集合)
J2EE集合框架(set集合)
41 0
|
7月前
|
存储 开发框架 API
J2EE集合框架之list集合
J2EE集合框架之list集合
23 0
J2EE集合框架之list集合
|
6月前
|
存储 开发框架 算法
J2EE集合框架之list
J2EE集合框架之list
46 0
|
6月前
|
存储 开发框架 测试技术
J2EE集合框架(List集合)
J2EE集合框架(List集合)
39 0