Java基础之Map类

Posted Ocean:)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础之Map类相关的知识,希望对你有一定的参考价值。

Map类

Map

键(key)值(value)对形式

interface Map<K, V>

​ class HashMap<K, V>哈希表结构

​ class Tree Map<K, V>底层是树形结构,存储要求K有对应的排序方式

Map双边队列中键(Key)是唯一的,但是值(value)是可以重复的

Map<K, V>双边队列方法

增:

  • put(K k, V v);

    存入一个键值对类型, K和V都要符合泛型约束

  • putAll(Map<? extend K, ? extends V> map);

    存入另一个Map双边队列,并且要求添加的Map双边队列中的K和V都要和当前Map中存储的K和V一致

删:

  • remove(Object K);

    删除对应K的键值对

改:

  • put(K k, V v);

    对应当前K存在,修改对应内容

查:

  • int size();

    当前Map双边队列中,有效键值对个数

  • boolean isEmpty();

    是否为空

  • boolean containsKey(Object key);

    判断指定key是否存在

  • boolean containsValue(Object Value);

    判断指定Value是否存在

  • Set keySet();

    返回整个Map双边队列中所有Key对应的Set集合

    [注意]一个方法使用set结尾,表示该方法返回的是一个集合类型,大多数情况下都是set类型

  • Collection values();

    返回整个Map双边队列中所有Value对应的Collection集合

    [注意]方法名如果是一个复数,返回值类型集合或者是数组情况居多

hashmap实例:

package obj_map;

import java.util.HashMap;

public class Demo1 {
	public static void main(String[] args) {
		HashMap<String, String> map = new HashMap<String, String>();
		
		map.put("1", "one");
		map.put("2", "two");
		map.put("3", "three");
		map.put("4", "four");

		System.out.println(map);
		
		HashMap<String, String> map2 = new HashMap<String, String>();
		
		map2.put("yi", "one");
		map2.put("er", "two");
		map2.put("san", "three");
		map2.put("si", "four");
		
		// 添加map
		map.putAll(map2);
		System.out.println(map);
		
		// 删除元素
		System.out.println(map.remove("yi"));
		System.out.println(map);
		
		System.out.println(map.remove("1", "one"));
		System.out.println(map);
		
		System.out.println(map.containsKey("2"));
		System.out.println(map.containsValue("two"));
	}
}

EntrySet

Entry可以认为是键值对对象

定义在Map类内

class Entry <K, V> {
    K k;
    V v;
}

K,V是完全依赖于Map约束的,这里可以使用Entry里面保存的是每一个键值对类对象

Map中提供了一个方法

Set<Entry<K, V>> entrySet

返回值是键值对类对象Set集合

Set集合中存储的是Entry类型

Entry类型是带有泛型的

实例:

package obj_map;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Demo1 {
	public static void main(String[] args) {
		HashMap<String, String> map = new HashMap<String, String>();
		
		map.put("1", "one");
		map.put("2", "two");
		map.put("3", "three");
		map.put("4", "four");

		Set<Map.Entry<String, String>> entrySet = map.entrySet();
		
		System.out.println(entrySet);
	}
}

输出结果

TreeMap<K, V>以及Comparable和Comparator

根据键的值进行排序

Comparable实现

Demo2.java

package obj_set;

import java.util.TreeMap;

public class Demo2 {
	public static void main(String[] args) {
		TreeMap<String, String> map = new TreeMap<String, String>();
		
		map.put("李四", "1");
		map.put("王五", "2");
		map.put("张三", "3");
		map.put("赵六", "4");
		
		System.out.println(map);
		
		TreeMap<Dog, String> map2 = new TreeMap<Dog, String>();
		
		map2.put(new Dog("one", 11), "ocean");
		map2.put(new Dog("three", 2), "ocean");
		map2.put(new Dog("two", 31), "ocean");

		System.out.println(map2);
	}
}

Dog.java

package obj_set;

public class Dog implements Comparable<Dog>{
	String name;
	int age;
	
	public Dog() {
	}
	
	public Dog(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "Dog [name=" + name + ", age=" + age + "]";
	}

	@Override
	public int compareTo(Dog o) {
		return this.age - o.age;
	}
}

Comparator实现

Demo2.java

package obj_set;

import java.util.Comparator;
import java.util.TreeMap;

public class Demo2 {
	public static void main(String[] args) {
		TreeMap<String, String> map = new TreeMap<String, String>();
		
		map.put("李四", "1");
		map.put("王五", "2");
		map.put("张三", "3");
		map.put("赵六", "4");
		
		System.out.println(map);
		
		TreeMap<Dog, String> map2 = new TreeMap<Dog, String>(
			new Comparator<Dog>() {
				@Override
				public int compare(Dog o1, Dog o2) {
					return o1.getAge() - o2.getAge();
				}
			}
		);
		
		map2.put(new Dog("one", 11), "ocean");
		map2.put(new Dog("three", 2), "ocean");
		map2.put(new Dog("two", 31), "ocean");

		System.out.println(map2);
	}
}

推荐这种方式,更加简洁

以上是关于Java基础之Map类的主要内容,如果未能解决你的问题,请参考以下文章

Java基础教程之MAP集合

Java基础知识之集合

Java语言基础之方法的设计

Java入门笔记之(第六章 collections之map)

Java集合之Map

java集合之Map接口