Java集合框架和重要接口、类
文章目录
- 一、集合框架
- 1、接口
- 2、实现类
- 3、集合类图
- 4、集合框架的好处
- 二、重要接口
- 1、Collection
- 2、List
- 3、Set
- 4、Queue
- 5、Map
- 5、迭代器接口
一、集合框架
Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces 和其实现类 classes
1、接口
Java Collections Framework 接口提供抽象数据类型来表示集合。
java.util.Collection
是集合框架的根接口。它位于集合框架层次结构的顶部。它包含一些重要的方法,例如每个 Collection 类都必须实现的 size()、iterator()、add()、remove()、clear()
。
其他一些重要的接口是 java.util.List、java.util.Set、java.util.Queue、java.util.Map
。Map 是唯一不继承自 Collection 接口的接口,但它是 Collections 框架的一部分。所有集合框架接口都存在于 java.util
包中。
2、实现类
Java Collections 框架为核心集合接口提供了实现类。我们可以使用它们在 Java 程序中创建不同类型的集合。
一些重要的集合类是 ArrayList、LinkedList、HashMap、TreeMap、HashSet、TreeSet
。这些类解决了我们大部分的编程需求,但是如果我们需要一些特殊的集合类,我们可以扩展它们来创建我们的自定义集合类。
Java 1.5 提出了线程安全的集合类,允许我们在迭代它们时修改集合。其中一些是CopyOnWriteArrayList、ConcurrentHashMap、CopyOnWriteArraySet
。这些类在 java.util.concurrent
包中。
所有集合类都存在于 java.util
和 java.util.concurrent
包中。
3、集合类图
4、集合框架的好处
- 减少开发工作量——它带有几乎所有常见类型的集合和有用的方法来迭代和操作数据。所以我们可以更专注于业务逻辑,而不是设计我们的集合 API。
- 更好的质量——使用经过充分测试的核心集合类可以提高我们的程序质量,而不是使用任何自己开发的数据结构。
- 可重用性和互操作性
- 减少维护工作,因为每个人都知道 Collection API 类。
二、重要接口
1、Collection
public interface Collection<E> extends Iterable<E> {}
Collecton
继承另一个接口Iterable
,由下图可以看出Collection
实现了以下方法。
2、List
List集合类中的元素有序(添加顺序和取出顺序一致),可重复。
List集合中的每个元素有其对应的顺序索引
ArrayList
:由数组来实现数据的存储,可以随机访问
Vector
:和ArrayList类似,它是线程安全的
LinkedList
:双向链表实现,可以快速在链表中间插入和删除元素。
3、Set
Set 是一个不能包含重复元素的集合。
TreeSet
:基于红黑树实现,支持有序性操作。但是查找效率不如 HashSet,HashSet 查找的时间复杂度为 O(1),TreeSet 则为 O(logN)。
HashSet
:基于哈希表实现,支持快速查找,但不支持有序性操作。使用 Iterator 遍历 HashSet 得到的结果是不确定的。
LinkedHashSet
:具有 HashSet 的查找效率,并且内部使用双向链表维护元素的插入顺序。
4、Queue
Queue是一个集合,用于在处理之前保存多个元素。
Queue 还提供了额外的插入、提取和检查操作。
LinkedList
:可以用它来实现双向队列。
PriorityQueue
:基于堆结构实现,可以用它来实现优先队列。
5、Map
Map是一个将键映射到值的对象。映射不能包含重复的键:每个键最多可以映射到一个值。
TreeMap
:基于红黑树实现。
HashMap
:基于哈希表实现。
HashTable
:和 HashMap 类似,但它是线程安全的,这意味着同一时刻多个线程同时写入 HashTable 不会导致数据不一致。它是遗留类,不应该去使用它,而是使用 ConcurrentHashMap 来支持线程安全,ConcurrentHashMap 的效率会更高,因为 ConcurrentHashMap 引入了分段锁。
LinkedHashMap:使用双向链表来维护元素的顺序,顺序为插入顺序或者最近最少使用(LRU)顺序。
5、迭代器接口
① Iterator()方法
Iterator 接口提供了迭代 Collection 元素的方法。我们可以使用iterator()方法获取迭代器的实例。
public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("xiaoming");list.add("xiaohong");list.add("xiaoli");list.add("xiaosi");// 通过Iterator 迭代Iterator io = list.iterator();while(io.hasNext()) {System.out.println(io.next());}}
在List接口中实现了iterator方法。该方法类型为Iterator接口。
hasNext():判断是否还有下一个元素,返回boolean类型
next():将下一个元素返回
② foreach
增强for,底层仍然是迭代器,简化版的Iterator
基本语法
for(元素类型 元素名 : 集合名或数组名) {访问元素
}
public static void main(String[] args) {List list = new ArrayList();list.add("xiaoming");list.add("xiaohong");list.add("xiaoli");list.add("xiaosi");// 通过增强for循环遍历for (Object x : list) {System.out.println(x);}}
参考资料
JournalDev Java教程
Java集合框架和重要接口、类相关推荐
- Java集合框架之四大接口、常用实现类,java基础面试笔试题
我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...
- JavaSE入门学习34:Java集合框架之Collection接口、子接口及其实现类
一Collection接口 Collection接口定义了存取一组对象的方法,其子接口Set.List和Queen分别定义了存储方式. 使用Collection接口需要注意: 1Collection接 ...
- Java集合框架中Map接口的使用
在我们常用的Java集合框架接口中,除了前面说过的Collection接口以及他的根接口List接口和Set接口的使用,Map接口也是一个经常使用的接口,和Collection接口不同,Map接口并不 ...
- Java集合查找Map,Java集合框架中Map接口的使用
在我们常用的Java集合框架接口中,除了前面说过的Collection接口以及他的根接口List接口和Set接口的使用,Map接口也是一个经常使用的接口,和Collection接口不同,Map接口并不 ...
- 5.0 java集合框架中的接口collection属于_JAVA集合框架 - osc_cyo2dovg的个人空间 - OSCHINA - 中文开源技术交流社区...
一.为什么要使用集合 单个数据,可以用变量保存: 多个数据,可以用数组保存: 但是对于存储多个数据且数量不确定的情况,使用集合: 二.集合和数组的区别 (1)数组: 1.只能保存同一种类型的数据: 2 ...
- Java集合框架:Collections工具类
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...
- 2014年4月5日 java集合框架总结2--List接口及其子类
List接口 Collection接口的子接口,可以使用Collection中全部方法. 有序集合,元素有索引,元素可以重复 List:特有的常见方法:有一个共性特点就是都可以操作角标. 1,添加 ...
- Java集合框架及基本接口
文章目录 Collection接口及迭代器 泛型方法的使用 集合基本接口和实现 List ArrayList LinkedList ListIterator接口和Iterable接口的区别 Set H ...
- (Java集合框架)List接口
List接口介绍 java.util.List接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现了List接口的对象称为List集合.在List集合中允许出现重复的元素,所 ...
- Java集合框架:Arrays工具类
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...
最新文章
- ubuntu samba 安装
- 小白学数据分析-----付费渗透率再研究
- JDBC编程的事务处理
- CachedNetworkImage 图片缓存
- 网络编程学习笔记(socketpair函数)
- CRC校验原理及STM32 IAP在线升级程序
- PIXI.JS兼容微信小游戏
- 3. AJAX 请求与响应
- jQuery--checkbox全选/取消全选 及checkbox遍历
- 机器人学基础–左乘和右乘
- ie8升级到ie11
- 微信小程序——定位(根据经纬度算距离)
- linux 查看文件夹大小
- 软件研发中也有5S 管理?
- 2535: [Noi2010]Plane 航空管制2
- 【干货】1.5W+字的全链路前端性能优化送给你
- How to design an FPGA from scratch-1_FPGA_8_24
- 38、EST序列拼接流程
- 为什么那么多的企业选择上云,上云有哪些优势?
- 什么是RPC(Remote Procedure Call)