Map实现类,集合工具类

一、Map接口

1. HashMap

数据结构:JDK1.8之前:哈希表(数组+单向链表);JDK1.8之后:哈希表(数组+单向链表+红黑树),当链表长度超过阈值(8)时,链表将转换为红黑树。
特点:查询快,元素无序,key不允许重复但可以为null,value可以重复。

  • HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。
  • HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。
  • HashMap 是无序的,即不会记录插入的顺序。
  • HashMap 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口。

在这里插入图片描述

public class MapDemo {
    public static void main(String[] args) {
        Map<String, String> m = new TreeMap<>();
        Map<String, String> h = new HashMap<>();// 创建 HashMap 对象 Sites
        HashMap<Integer, String> Sites = new HashMap<Integer, String>();
        // 添加键值对
        Sites.put(1, "Google");
        Sites.put(2, "Runoob");
        Sites.put(3, "Taobao");
        Sites.put(4, "Zhihu");
        // 输出 key 和 value
        for (Integer i : Sites.keySet()) {
            System.out.println("key: " + i + " value: " + Sites.get(i));
        }
        // 返回所有 value 值
        for (String value : Sites.values()) {
            // 输出每一个value
            System.out.print(value + ", ");
        }
    }
}

2. LinkedHashMap

JDK1.8之前:哈希表(数组+双向链表);JDK1.8之后:哈希表(数组+双向链表+红黑树),当链表长度超过阈值(8)时,转换为红黑树。
在这里插入图片描述

3. HashTable(不用)

哈希表 ,key不允许重复并且不可以为null,value可以重复。
底层分析:HashTable和Vector一样是古老的集合,有遗留缺陷,在JDK1.2之后 被更先进的集合取代了;HashTable是线程安全的,速度慢,HashMap是线程不安全的,速度快;
ps:Hashtable的子类Properties现在依然活跃,Properties集合是一个唯一和IO流结合的集合。
在这里插入图片描述

4. TreeMap

数据结构: 红黑树
特点:查询快,元素有序,key不允许重复并且不可以为null,value可以重复。
在这里插入图片描述

5. ConcurrentHashMap

JDK1.7 Segment 数组、HashEntry 组成,和 HashMap 一样,仍然是数组加链表。
JDK1.8 采用红黑树等
在这里插入图片描述

二、工具类

1. Collections工具类

// 对list集合排序
sort(list);
sort(list,comparator)
// 二分查找
int binarySearch(list,key);
int binarySearch(list,key,Comparator);
// 按照指定比较器进行排序
 max(Collection);
 max(Collection,comparator);
 min(Collection);
 min(Collection,comparator);
 // 反转
  reverse(list);
 // 将不同步的集合变为同步的集合
 Set synchronizedSet(SET<t> s)
 Map synchronizedMaP(Map<K,V> m)
 List synchronizedList(List<T> list)

2. Arrays工具类

// 二分查找
binarySearch(int[]);
binarySearch(double[]);
// 数组排序
sort(int [])
sort(char[])
// 将数组变成字符串
toString(int []);
// 复制数组
copyOf(int/boolean...[] original,int newLength);
    original:源数组
    newLenght:新数组长度
copyOfRange(int/float[]... original, int from, int 
// 比较数组是否相同
equals(int[],int[]);
// 数组变成集合
Arrays.asList(T[]);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: hutool是一个Java工具类库,提供了丰富的工具类来方便Java开发人员快速开发,其中也包括了针对集合工具类。 hutool集合工具类提供了丰富的API,包括对List、Queue、Stack、Map集合数据结构的操作和处理。 其中,hutool提供的ListUtil工具类可以实现对List集合的排序、分页、去重等操作。QueueUtil和StackUtil工具类可以方便地对队列和栈进行push、pop等操作。MapUtil工具类则提供了map集合的常见操作,如put、get、remove等。 除了常见的集合类型,hutool还提供了TreeUtil工具类,可以方便的操作树型结构的集合数据。 hutool集合工具类的设计追求简洁易用,内部实现也采用了高效的算法。并且,hutool集合工具类的代码开源,易于修改和扩展。 综上,hutool集合工具类可以大大提高Java开发人员的开发效率和代码质量,是一款不可多得的Java工具库。 ### 回答2: hutool是一个Java工具包,其中包含了许多实用工具类。在其中,集合工具类对于Java程序员来说相当重要。 hutool中的集合工具类提供了简单、高效、易用的方法来操作集合对象。例如,可以使用ListUtil、SetUtil、MapUtil等工具类对List、Set、Map集合进行快速操作,如转换、去重、排序、过滤、判空等。 其中,集合转换是hutool集合工具类的常见用途之一,可以将一个集合类型转换成另一种集合类型,比如将List转换成Set或Map,还可以指定Key和Value的转换器,让转换更加灵活和自由。同时,hutool集合工具类还提供了快捷的创建空集合和不可变集合的方法,非常方便,也能避免空指针异常等问题。 另外,hutool集合工具类还具有比较高的通用性,可以应用在各类Java程序开发中,涵盖了Spring、Mybatis、Hibernate等框架,还比较适用于处理大数据量的集合操作。 总的来说,hutool集合工具类是一款非常实用的Java工具包,对于开发人员来说是不可或缺的。它简化了集合操作的流程,提高了代码的编写效率和可读性。如果你还没有使用过hutool集合工具类,不妨尝试一下,它一定会给你的开发工作带来便利。 ### 回答3: Hutool是一个Java工具类库,它为Java开发人员提供了很多实用的工具类,其中就包括集合工具类。Hutool集合工具类提供了一系列实用的方法,可以使Java开发人员更加便捷地操作集合,提升了开发效率。 Hutool集合工具类包含了对List、Set、Map等Java集合的操作。其中,对List操作的方法包括list转为数组、按照元素属性排序、去重、过滤等;对Set操作的方法包括set转为数组、去重、求交集、判断子集等;对Map操作的方法包括取最大值、取最小值、map转为List、根据value排序、根据value取key等。 Hutool集合工具类中也提供了一些特殊的数据结构,例如MultiValueMap,它可以将一个key对应多个value的情况存储在同一个Map中。同时,Hutool还提供了一些便捷的工具方法,例如采用Lambda表达式过滤集合、统计集合元素个数、集合元素分组等。 Hutool集合工具类的使用非常简单,只需导入相应的工具类包,即可使用其中的方法。例如,使用ListUtil中的distinct方法去重List可以直接调用ListUtil.distinct(list)即可。另外,Hutool集合工具类中的方法都提供了详细的文档说明,使开发人员更容易理解和使用。 总之,Hutool集合工具类提供了很多实用的方法,可以帮助Java开发人员更加便捷地操作集合,提升开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值