集合之Map体系集合

集合之Map体系集合

一、Map根接口

特点:1. 用于存储任意键值对(Key-Value)。

  1. 键:无序、无下标、不可重复。

  2. 值:无序、无下标、可重复。

    方法:

    • V put (K key,V value) //将对象存入到集合中,关联键值。key重复则覆盖原值。
    • Object get (Object key) //根据键获取对应的值。
    • Set(K) //返回所有key。
    • Collection values() //返回包含所有值的Collection集合。
    • Set<Map.Entry<K,V>> //键值匹配的Set集合。
    • 代码实现
package com.sun.base.Map;

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

/**
 * Map接口的使用
 * 特点;(1)存储键值对(2)键不能重复,值可以重复(3)无序
 */
public class Demo01 {
    public static void main(String[] args) {
        //创建Map集合
        Map<String,String> map=new HashMap<>();
        //1、添加元素
        map.put("cn","中国");
        map.put("uk","英国");
        map.put("usa","美国");
        map.put("cn","zhongguo");//重复,会覆盖掉“中国”
        System.out.println("元素个数:"+map.size());
        System.out.println(map.toString());
        //2、删除元素
        map.remove("usa");
        System.out.println("元素个数:"+map.size());
        System.out.println(map.toString());
        //3、遍历
        //3.1使用keySet()
        System.out.println("========3.1使用keySet()=========");
        Set<String> keySet = map.keySet();
        for (String key:keySet) {
            System.out.println(key+"---"+map.get(key));
        }
        //3、2使用entrySet()方法效率高于keySet
        System.out.println("========3、2使用entrySet()方法=========");
        Set<Map.Entry<String, String>> entries = map.entrySet();
        for (Map.Entry<String,String> entry:entries) {
            System.out.println(entry.getKey()+"---"+entry.getValue());
        }
        //4、判断
        System.out.println(map.containsKey("cn"));
        System.out.println(map.containsValue("中国"));
    }
}

二、Map集合的实现类

  • HashMap:线程不安全,运行效率快;允许用null作为key或是value。

代码实现

package com.sun.base.Map;

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

/**
 * HashMap集合的使用
 * 存储结构:哈希表(数组+链表+红黑树)
 * 使用key的hashCode和equals作为重复依据
 * @author SFF
 */
public class Demo02 {
    public static void main(String[] args) {
        //创建集合
        HashMap<Student, String> stu = new HashMap<>();
        //添加元素
        Student s1 = new Student("孙悟空", 118);
        Student s2 = new Student("猪八戒", 128);
        Student s3 = new Student("沙和尚", 138);
        stu.put(s1,"广东");
        stu.put(s2,"陕西");
        stu.put(s3,"河南");
        System.out.println("元素个数:"+stu.size());
        System.out.println(stu.toString());
        //删除
        //stu.remove(s2);
        //遍历
        System.out.println("=====使用keySet=====");
        Set<Student> students = stu.keySet();
        for (Student s:students) {
            System.out.println(s.toString()+"="+stu.get(s));
        }
        System.out.println("=====使用entrySet=====");
        Set<Map.Entry<Student, String>> entries = stu.entrySet();
        for (Map.Entry<Student,String> st:entries) {
            System.out.println(st.getKey()+"="+st.getValue());
        }
        //判断
        System.out.println(stu.containsKey(s1));
        System.out.println(stu.containsValue("陕西"));
        System.out.println(stu.isEmpty());
    }
}
class Student{
    private String name;
    private int age;

    Student(String name, int age) {
        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 "Student[" + "name=" + name  + ", age=" + age + ']';
    }
}
  • Hashtable(不常用):线程安全,运行效率慢;不允许null作为key或者value。

  • Properties:Hashtable的子类,要求key和value都是String,通常用于配置文件的读取

  • TreeMap:实现了SortedMap接口(是Map的子接口),可以对key自动排序

package com.sun.base.Map;

import java.util.TreeMap;

/**

  • TreeMap的使用

  • 存储结构:红黑树

  • @author SFF
    */
    public class Demo03 {
    public static void main(String[] args) {
    //创建集合
    TreeMap<Student, String> treeMap = new TreeMap<>();
    //添加元素
    Student s1 = new Student("孙悟空", 118);
    Student s2 = new Student("猪八戒", 128);
    Student s3 = new Student("沙和尚", 138);
    treeMap.put(s1,"广东");
    treeMap.put(s2,"陕西");
    treeMap.put(s3,"河南");
    System.out.println("元素个数:"+treeMap.size());
    System.out.println(treeMap.toString());
    //删除 treeMap.remove
    //遍历1、使用keySet。2、使用entrySet
    }
    }
    class Student implements Comparable {
    private String name;
    private int age;

    Student(String name, int age) {
    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 "Student[" + "name=" + name + ", age=" + age + ']';
    }

    @Override
    public int compareTo(Student o) {
    int n1=this.age-o.getAge();
    return n1;
    }
    }

posted @ 2020-12-09 15:04  某人很酷  阅读(103)  评论(0)    收藏  举报