Java 之Map集合(Map接口常用方法、HsahMap子类、HashTable子类、TreeMap子类)

Map集合

Map集合中会一次性保存俩个对象,且这俩个对象的关系为:key = value结构;即可以通过key找到对应的value内容。

1.Map接口概述

Map接口定义:public interface Map<K,V>

在Map接口中有如下常用方法:

  • 向Map中追加数据:public V put(K key,V value)
  • 更具key值取得相应的value:public V get(Object key)(如果没有返回null)
  • 取得所有key信息,key不能重复:public Set<K> keySet()
  • 取得所有value信息,可以重复:public Collection<V> values()

Map本身是一个接口,要使用Map需要通过子类进行对象实例化。
Map接口的常用子类有:HashMap , HashTable , TreeMap , ConcurrentHashMap。

1.1 HashMap子类

HashMap是使用Map集合中最为常用的子类。

HashMap中允许key和value为null,且key值有且只有一个为null,value可以有任意多个为null

eg:HashMap基本操作:

public class TestDemo {
    public static void main(String[] args) {
        Map<Integer,String> map = new HashMap<>();
        map.put(1,"Hello");
        map.put(1,"Hello");
        map.put(2,"Hi");
        map.put(3,"Java");
        //不会出现重复元素
        System.out.println(map);
        //根据key值取得value
        System.out.println(map.get(2));
        //找不到结构返回null
        System.out.println(map.get(100));
    }
}

eg:取得Map中的所有Key信息:

public class Test {
    public static void main(String[] args) {
        Map<Integer,String> map = new HashMap<>();
        map.put(1,"Hello");
        map.put(1,"Hello");
        map.put(2,"Hi");
        map.put(3,"Java");
        Set<Integer> set = map.keySet();
        Iterator<Integer> it = set.iterator();
        while (it.hasNext()){
            System.out.println(it.next());
        }
    }
}

1.2 HashTable子类

HashTable中,key与value均不为null

eg:HashTable的基本使用:

public class TestDemo {
    public static void main(String[] args) {
        Map<Integer,String> map = new Hashtable<>();
        map.put(1,"Hello");
        map.put(2,"Hi");
        map.put(1,"Hello");
        map.put(3,"world");
        System.out.println(map);
    }
}

1.3TreeMap子类

TreeMap是一个可以排序的Map子类,它是按照Key的内容排序的。

eg:TreeMap的基本使用:

public class TestDemo {
    public static void main(String[] args) {
        Map<Integer,String> map = new TreeMap<>();
        map.put(2,"A");
        map.put(1,"B");
        map.put(3,"C");
        System.out.println(map);
    }
}

HashMap、TreeMap、Hashtable的关系与区别

  • HashMap、TreeMap、Hashtable都是Map的常用子类
    • HashMap基于哈希表+红黑树(JDK1.8之后)
    • Hashtable基于哈希表
    • TreeMap基于红黑树
  • HashMap采用懒加载策略,采用异步处理,线程不安全,性能较高
  • Hashtable产生对象时初始化内部哈希表(默认大小为16),采用synchronized同步方法,线程安全,性能很低(读读互斥)
  • 关于null
    • HashMap K与V都允许为null
    • TreeMap K不为null,V可以为null
    • Hashtable K与V都不允许为null
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值