java map集合简介说明

java map集合简介说明

转自

http://www.java265.com/JavaCourse/202206/3748.html

如果你是初学者,还在为学习map集合而苦恼时,笔者建议你仔细阅读以下文章,以下文章将助你彻底了解map集合

下文笔者将简明扼要的讲述map集合的简介说明,如下所示

Map是一个接口,它具有以下特点:
  1.Map中的键是无序的,并且键是不重复的,没有索引,map中的值可以重复
  2.Map集合中的键和值都可以为null
  3.Map集合中后放入的键值会替换前面相同键的值

Map常见的实现类有以下三种
    HashMap:
	  元素根据键是无序的
       不重复的
        无索引的
        而值是可以重复的(与Map体系一致)
    LinkedHashMap:
	    元素根据键是有序的,键不重复的,无索引的,值是可以重复的
   TreeMap:
        元素根据键是排序的,键不重复的,无索引的,值是可以重复的 

Map集合实现类的示例分享

package com.java265.other;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;

public class TestMap {
	/**
	 * java265.com Map实现类的功能简介说明
	 */
	public static void main(String[] args) {
		Map<String, String> map1 = new HashMap<>();
		Map<String, String> map2 = new LinkedHashMap<>();
		Map<String, String> map3 = new TreeMap<>();
		map1.put("a", "java265.com-1");
		map1.put("c", "java265.com-2");
		map1.put("b", "java265.com-3");

		map2.put("a", "java265.com-1");
		map2.put("c", "java265.com-2");
		map2.put("b", "java265.com-3");

		map3.put("a", "java265.com-1");
		map3.put("c", "java265.com-2");
		map3.put("b", "java265.com-3");
		map3.put("b", "java265.com-4");

		System.out.println("map1:" + map1);
		System.out.println("map2:" + map2);
		System.out.println("map3:" + map3);

	}

}
-----运行以上代码,将输出以下信息------
map1:{a=java265.com-1, b=java265.com-3, c=java265.com-2}
map2:{a=java265.com-1, c=java265.com-2, b=java265.com-3}
map3:{a=java265.com-1, b=java265.com-4, c=java265.com-2}
从以上代码,我们可以得出
map中LinkedHashMap是有顺序的
并且map都不可插入重复的键值
但是我们发现TreeMap的排序有些诡异,那么TreeMap的排序是一个什么样的规则呢?
下文笔者将一一道来,如下所示

TreeMap

TreeMap集合的排序是默认对键升序排列
当然我们也可以自定义排序规则,如下所示
  
 1.类实现Comparable接口,重写比较规则
 2.集合自定义Comparator比较器对象,重写比较规则

自定义排序规则

User类:
public class User implements Comparable<User>{
    private String name;
    private int age;
@Override
    public int compareTo(User o) {
        return o.getAge()-this.getAge();
    } 
 /*此处省略 get set方法的编写*/

Map<User,String > User = new TreeMap<>();
        User.put(new User("毛四",9000),"Java程序员");
        User.put(new User("刘畅",32000),"python程序员");
        User.put(new User("柳荫",6000),"清洁工");
        System.out.println(User); 

集合自定义Comparator比较器对象:

 
Map<User,String > User = new TreeMap<>(new Comparator<User>() {
   @Override
   public int compare(User o1, User o2) {
          return o2.getSalary()-o1.getSalary();
            }
        });
User.put(new User("毛四",9000),"Java程序员");
User.put(new User("刘畅",32000),"python程序员");
User.put(new User("柳荫",6000),"清洁工");
System.out.println(User); 

Map集合常使用的API

Map<String ,Integer> maps = new HashMap<>();
        //1、添加元素
        maps.put("小敏",18);
        maps.put("阿香",19);
        maps.put("晓东",20);
        System.out.println(maps);
        System.out.println("-----------------------------");
        //2、根据键key删除键值对key和value
        maps.remove("阿香");
        System.out.println(maps);
        System.out.println("-----------------------------");
        //3、清除Map集合中的所有元素
        maps.clear();
        System.out.println(maps);
        System.out.println("-----------------------------");
        //4、判断Map集合中是否包含此key
        System.out.println(maps.containsKey("小敏"));
        System.out.println(maps.containsKey("晓东"));
        System.out.println("-----------------------------");
        //5、判断Map集合中是否包含此value
        System.out.println(maps.containsValue(30));
        System.out.println(maps.containsValue(19));
        System.out.println("-----------------------------");
        //6、判断Map集合是否为空
        System.out.println(maps.isEmpty());
        System.out.println("-----------------------------");
        //7、获取Map集合中元素个数
        System.out.println(maps.size());
        System.out.println("-----------------------------");
        //8、获取集合中所有的键
        maps.put("秋红",18);
        maps.put("黄菲",19);
        Set<String> key = maps.keySet();//将所有键储存在set集合中
        System.out.println(key);
        System.out.println("-----------------------------");
        //9、获取集合中的所有值
        Collection<Integer> values = maps.values();
        System.out.println(values);
        System.out.println("-----------------------------");

遍历Map集合

使用键查找值

 实现思路:
    1.获取keyset集合
	2.foreach判断,并且使用get方法获取value值
Map<String ,Integer> maps = new HashMap<>();
        maps.put("小敏",18);
        maps.put("阿香",19);
        maps.put("晓东",20);
        System.out.println(maps);
        Set<String> key = maps.keySet();
        for (String k:key
             ) {
            System.out.println(maps.get(k));
        }

获取map的键值对

实现思路:
    使用getkey()和getvalue()即可获取键值对集合

例:

Map<String ,Integer> maps = new HashMap<>();
        maps.put("小敏",18);
        maps.put("阿香",19);
        maps.put("晓东",20);
        System.out.println(maps);
        Set<Map.Entry<String, Integer>> set = maps.entrySet();
        System.out.println(set);
        for (Map.Entry<String, Integer> s :
                set) {
            System.out.println(s.getKey()+"->"+s.getValue());
        }

使用Lambda表达式获取map集合数据

Map<String ,Integer> maps = new HashMap<>();
        maps.put("小敏",18);
        maps.put("阿香",19);
        maps.put("晓东",20);
        System.out.println(maps);
        maps.forEach(new BiConsumer<String, Integer>() {
            @Override
            public void accept(String k, Integer v) {
                System.out.println(k+"->"+v);
            }
        });

//Lambda表达式简化map集合数据获取
maps.forEach((k,v)-> System.out.println(k+"->"+v)    ); 
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » java map集合简介说明