实现Collection接口的标准集合类
作者:@kuaiquxie
作者的github:https://github.com/bitebita
本文为作者原创,如需转载,请注明出处:https://www.cnblogs.com/dzwj/p/15430782.html
Java提供了一套实现Collection接口的标准集合类
bstractCollection
实现了大部分的集合接口。
AbstractList
继承于AbstractCollection并且实现了大部分List接口。
bstractSequentialList
继承于AbstractList,提供了对数据元素的链式访问而不是随机访问。
LinkedList
该类实现了List接口,允许有null(空)元素。主要用于创建链表数据结构,该类没有同步方法,如果多个线程同时访问一个List,则必须自己实现访问同步,解决方法 就是在创建List时候构造一个同步的List。例如;List list=Collections.synchronizedList(newLinkedList( ...));LinkedList查找效率低。
ArrayList
该类也是实现了List的接口,实现了可变大小的数组,随机访问和遍历元素时,提供更好的性能。该类也是非同步的,在多线程的情况下不要使用。ArrayList增长当前长度的50%,插入删除效率低。
AbstractSet
继承于AbstractCollection并且实现了大部分Set接口。
HashSet
该类实现了Set接口,不允许出现重复元素,不保证集合中元素的顺序,允许包含值为null的元素,但最多只能一个。
LinkedHashSet
具有可预知迭代顺序的Set接口的哈希表和链接列表实现。
TreeSet
该类实现了Set接口,可以实现排序等功能。
AbstractMap
实现了大部分的Map接口。
HashMap
HashMap是一个散列表,它存储的内容是键值对(key-value)映射。
该类实现了Map接口,根据键的HashCode值存储数据,具有很快的访问速度,最多允许一条记录的键为null,不支持线程同步
TreeMap
继承了AbstractMap,并且使用—颗树。
WeakHashMap
继承AbstractMap类,使用弱密钥的哈希表。
LinkedHashMap
继承于HashMap,使用元素的自然顺序对元素进行排序.
ldentityHashMap
继承AbstractMap类,比较文档时使用引用相等。
如何使用迭代器(下节写关于迭代器的)
一般遍历数组都是采用for循环或者增强for,这两个方法也可以用在集合框架,但是还有一种方法是采用迭代器遍历集合框架,它是一个对象,实现了lterator接口或
Listlterator接口。迭代器,使你能够通过循环来得到或删除集合的元素。Listlterator继承了lterator,以允许双向遍历列表和修改元素。
如何使用比较器
TreeSet和TreeMap的按照排序顺序来存储元素.然而,这是通过比较器来精确定义按照什么样的排序顺序。这个接口可以让我们以不同的方式来排序一个集合。
集合是一个对象,可容纳其他对象的引用。集合接口声明对每一种类型的集合可以执行的操作。集合框架的类和接口均在java.util包中。
任何对象加入集合类后,自动转变为Object类型,所以在取出的时候,需要进行强制类型转换。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)