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类的主要内容,如果未能解决你的问题,请参考以下文章