JAVA集合简介(二):Map集合-HashMap、TreeMap

HashMap集合

1、HashMap示意图:

HashMap是一个散列表,它存储的方式是键值对的映射-> key:vlaue

HashMap实现了Map接口,根据键的HashCode值存储数据,具有很快的访问速度,最多允许一条记录的键为null,不支持线程同步

HashMap是无序的,既不会记录插入的顺序

HashMap继承于AbstractMap,实现Map、Cloneable、Java.io.SErializable接口

HashMap在解决哈希冲突是有了较大变化,当链表长度大于阈值时(默认值为8),将链表转换为红黑树(将链表转换成红黑树前会判断,如果当前数组的长度小于64,那么会选择先选择进行数组扩容,而不是转换为红黑树),以减少搜索时间。

二、HashMap的特点:

1、底层是链接+数组,JDK1.8粥又加了红黑树

2、存储的是key-vlaue类型的数据

3、key值不允许重复,可以重复会被覆盖掉,value可以重复

4、数据存储无序:无序指的是插入顺序和取出的顺序是不一致的

5、key和value都允许为空,但是只能允许有一个空的key

三、HashMap常用的方法:

1、.put(K key, V value) 将键(key)/值(value)映射存放到Map集合中

2、.get(Object key) 返回指定键所映射的值,没有该key对应的值则返回 null,即获取key对应的value。

3、. size()  返回Map集合中数据数量,准确说是返回key-value的组数。

4、.clear() 清空Map集合

5、.isEmpty () 判断Map集合中是否有数据,如果没有则返回true,否则返回false

6、.remove(Object key) 删除Map集合中键为key的数据并返回其所对应value值

7、.containsKey(Object key) Hashmap判断是否含有key

8、.containsValue(Object value) Hashmap判断是否含有value

9、Hashmap添加另一个同一个类型的map下的所有数据:

public class Test {
    public static void main(String[] args) {
        HashMap<String, Integer> map=new HashMap<>();
        HashMap<String, Integer> map1=new HashMap<>();
        /*void*///将同一类型的map添加到另一个map中
        map1.put("DEMO1", 1);
        map.put("DEMO2", 2);
        System.out.println(map);//{DEMO2=2}
        map.putAll(map1);
        System.out.println(map);//{DEMO1=1, DEMO2=2}
    }
}


运行结果:
{DEMO2=2}
{DEMO1=1,DEMO2=2}

10、Hashmap替换这个key的value:

public class Test {
    public static void main(String[] args) {
        HashMap<String, Integer> map=new HashMap<>();
        /*value*///判断map中是否存在这个key
        map.put("DEMO1", 1);
        map.put("DEMO2", 2);
        System.out.println(map);//{DEMO1=1, DEMO2=2}
        System.out.println(map.replace("DEMO2", 1));//2
        System.out.println(map);//{DEMO1=1, DEMO2=1}
    }
}

运行结果:
{DEMO1=1,DEMO2=2}
2
{DEMO1=1,DEMO2=1}

TreeMap集合

一、TreeMap的特点:

1、TreeMap是一个有序的key-value集合,他是通过红黑树实现的

2、无序,不允许重复 (无序只元素顺序于添加的顺序不一致)

3、treeMap的key是有序的

4、TreeMap集合默认会对键进行排序,所以键必须是实现自然排序和定制排序中的一种

(1):自然排序(按照字典表进行排序)

(2):定制排序

二、TreeMap基本使用:

大家可以参考这个博客,写得十分详细哦!

java中TreeMap常用方法_java中TreeMap集合的常用方法-CSDN博客

  • 19
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值