Map接口(集合续)

Map接口(集合续)

概述

  • 将键映射到值的对象

  • 一个映射不能包含重复的键

  • 每个键最多只能映射到一个值

HashMap:

HashMap中元素的key值不能重复,即彼此调用equals方法,返回为false。排列顺序是不固定的。

特点:

键不能重复,值可以重复(如果键重复,那么后面的键的值将会覆盖掉前面键的值)

一个键对应一个值

允许有一个键为null

键去重复的方法:hashcode方法和equals方法

Mapa接口常用方法:

V put(K key,V value)

V remove(Object key)

void clear()

boolean containsKey(Object key)

boolean containsValue(Object value)

boolean isEmpty()

int size()

V get(Object key)

Set keySet()

Collection values()

Set<Map.Entry<K,V>> entrySet()

package day4;

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

public class HashMapDemo {
    /*
    Map;双列存储  键----值
       键不能重复,值可以重复的
       HashMap
       TreeMap
       HashTable
     */
    public static void main(String[] args) {
        /*
        键去重复: hashcode()  equals()
                如果有重复的键,后面键的值会覆盖已经添加进去的值
                允许有一个为  null 的键
         */
        Map<String,String>  map=new HashMap<>();
                            map.put("a","1");
                            map.put("a","2");
                            map.put("c","3");
                            map.put("d","4");
                            map.put("w","5");
                            //map.put(null,"a");
                            //map.clear();
                            //map.remove("a");
        /*System.out.println(map.get("c"));
        System.out.println(map.containsKey("a"));
        System.out.println(map.size());
        System.out.println(map.isEmpty());
        System.out.println(map.containsValue("a"));*/


        Collection<String> values =map.values();
        System.out.println(values);
         /*
         遍历1
         Set<String>  keySet =map.keySet();
         for( String s:keySet){
             System.out.println(s);
         }*/
        /*
        遍历2
        Set<Map.Entry<String,String>>  set=map.entrySet();
         for( Map.Entry<String,String> entry:set) {
             System.out.println(entry.getValue()+"=="+entry.getKey());
         }
*/
        System.out.println(map);
    }
}

TreeMap:

TreeMap中所有的元素都保持着某种固定的顺序,如果需要得到一个有序的Map就应该使用TreeMap,key值所在类必须实现Comparable接口。

特点:

  • 适用于按自然顺序或自定义顺序遍历键(key)。

  • TreeMap根据key值排序,key值需要实现Comparable接口, 重写compareTo方法。TreeMap根据compareTo的逻辑,对 key进行排序。

  • 键是红黑树结构,可以保证键的排序和唯一性

package day4;

import java.util.TreeMap;

public class TreeMapDemo {
    public static void main(String[] args) {
        TreeMap<String,String> map = new TreeMap<>();
        map.put("a","1");
        map.put("f","4");
        map.put("e","3");
        map.put("x","5");
        map.put("b","2");
        System.out.println(map);
    }
}

TreeMap中所有的元素都保持着某种固定的顺序,如果需要得到一个有序的Map就应该使用TreeMap,key值所在类必须实现Comparable接口。

HashTable:

​ 实现了同步。

package day4;

import javafx.scene.control.TreeTableView;

import java.util.Hashtable;

public class TreeTableDemo {
    public static void main(String[] args) {
        Hashtable<String, String> tmap = new Hashtable<>();
        tmap.put("a","1");
        tmap.put("f","5");
        tmap.put("e","4");
        tmap.put("b","2");
        tmap.put("c","3");
        System.out.println(tmap);
    }
}

Map集合遍历

  • 根据键找值

获取所有键的集合

遍历键的集合,获取到每一个键

根据键找值

  • 根据键值对对象找键和值

获取所有键值对对象的集合

遍历键值对对象的集合,获取到每一个键值对对象

根据键值对对象找键和值

package day4;

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

public class HashMapDemo {

    public static void main(String[] args) {
        
        Collection<String> values =map.values();
        System.out.println(values);
      
         //遍历1
         Set<String>  keySet =map.keySet();
         for( String s:keySet){
             System.out.println(s);
         }
        
        //遍历2
        Set<Map.Entry<String,String>>  set=map.entrySet();
         for( Map.Entry<String,String> entry:set) {
             System.out.println(entry.getValue()+"=="+entry.getKey());
         }

        System.out.println(map);
    }
}

上一篇:集合中字符串出现次数处理


下一篇:Java基础之:Map——TreeMap