java-集合框架-Map

Map集合

Map接口特点:

  1. 用于存储任意键值对(Key-Value);
  2. 键:无序、无下标、不允许重复(唯一);
  3. 值:无序、无下标、允许重复。

java-集合框架-Map

 特点:存储一对数据(Key-Value),无序、无下标、键不可重复、值可以重复。

方法:

V put(K key,V value);//将对象存储到集合中,关联键值。key重复则覆盖原值。

Object get (Object key);//根据键获取对应的值。

keySet <key>;//返回所有key。

Collection<V> values();//返回包含所有值的Collection集合。

Set <Map.Entry<K,V>>;  //键值匹配的Set集合。

基本使用:

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

/**
 * Map接口的使用
 * 特点:(1)存储键值对(2)键不能重复,值可以重复(3)无序
 */
public class Demo01 {
    public static void main(String[] args) {
        //创建Map集合
        Map<String, String> map = new HashMap<>();
        //添加元素
        map.put("CN","中国");
        map.put("UK","英国");
        map.put("USA","美国");
//        map.put("CN","zhongguo");//值会被替换,键不可以重复
//        map.put("China","zhongguo");//值可以重复

        System.out.println("元素个数:"+map.size());
        System.out.println(map.toString());

        //删除
        map.remove("USA");
        System.out.println("删除之后:"+map.size());
        System.out.println(map.toString());

        //遍历
        //使用keySet();
        System.out.println("———————————————keySet()遍历—————————————————");
        for (String s : map.keySet()) {
            System.out.print(s+"——>"+map.get(s)+"\t");
        }

        System.out.println("\n———————————————entrySet()遍历(效率更高 )—————————————————");
        for (Map.Entry<String, String> entry : map.entrySet()) {
            System.out.print(entry.getKey()+"-->"+entry.getValue()+"\t");
        }
        System.out.println();

        //判断
        System.out.println(map.containsKey("CN"));
        System.out.println(map.containsValue("泰国"));
        System.out.println(map.isEmpty());


    }
}

Map集合实现类

HashMap【重点】:

  • JDK1.2版本,线程不安全,运行效率高 ,允许使用null作为key或者value;
    • HashMap();构造一个初始容量为16和默认加载因子为0.75的空HashMap。
import java.util.HashMap;
import java.util.Map;

/**
 * HashMap集合的使用
 * 存储结构:哈希表(数组+链表+红黑树)
 */
public class Demo02 {
    public static void main(String[] args) {
        //创建对象
        HashMap<Student, String> hashMap = new HashMap<>();
        Student p1 = new Student("张学友", 20);
        Student p2 = new Student("刘德华", 19);
        Student p3 = new Student("郭富城", 18);
        Student p4 = new Student("黎明", 18);
        //添加元素
        hashMap.put(p1,"歌神");
        hashMap.put(p2,"综合王");
        hashMap.put(p3,"舞王");
        hashMap.put(p4,"文艺王");
        hashMap.put(new Student("张学友",20),"music");
        System.out.println("元素个数:"+hashMap.size());
        System.out.println(hashMap.toString());

        //删除元素
//        hashMap.remove(p1);
//        hashMap.clear();
//        System.out.println("元素个数:"+hashMap.size());
//        System.out.println(hashMap.toString());

        //遍历
        System.out.println("——————————————————keySet方法——————————————————————————");
        for (Student student : hashMap.keySet()) {
            System.out.print(student.toString()+"-->"+hashMap.get(student)+"\t");
        }
        System.out.println();

        System.out.println("——————————————————entrySet方法——————————————————————————");
        for (Map.Entry<Student, String> entry : hashMap.entrySet()) {
            System.out.print(entry.getKey()+"-->"+entry.getValue()+"\t");
        }
        System.out.println();

        //判断
        System.out.println(hashMap.containsKey(new Student("张学友", 20)));
        System.out.println(hashMap.containsKey(p1));
        System.out.println(hashMap.containsValue("文艺王"));
    }
}
上一篇:2行代码实现修改代码后自动重载


下一篇:Java求素数