Java集合框架学习:01
-
Java集合框架:
-
集合框架被设计成要满足以下几个目标:
-
该框架必须是高性能的;基本集合(动态数组,链表,树,哈希表)的实现也必须是高校的;
-
该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性;
-
对一个集合的扩展和适应必须是简单的;
-
-
-
Java集合框架主要包括2种类型的容器:
-
一种是集合(Collection),存储一个元素集合;
-
另一种是图(Map),存储键/值对映射;
-
Collection接口又有3种子类型,List,Set和Queue,再下面是一些抽象类,最后是具体的实现类;
-
常用的集合实现类:ArrayList ,LinkedList , HashSet ,LinkedhashSet ,HashMap ,LinkedHashMap等;
-
-
集合框架是一个用来代表和操作集合的统一架构,所有的集合框架都包含如下内容:
-
接口:
-
是代表集合的抽象数据类型,例如:Collection, List ,Set ,Map等;
-
之所以定义多个接口,是为了满足不同的方式操作集合对象;
-
-
实现类:
-
是集合接口的具体实现;从本质上说,他们是可重复使用的数据类型;
-
例如:ArrayList , LinkedList ,HashSet , HashMap等
-
-
算法:
-
是实现集合接口的对象里的方法执行的一些有用的计算;
-
例如:搜索和排序;这些算法被称为多态;
-
-
-
除了集合,该框架也定义了几个Map接口和类,Map里存储的键/值对,尽管Map不是集合,但是他们完全整合在集合中;
-
集合接口:
-
集合框架定义了一些接口:具体如下:
序号 接口描述 1 Collection接口: Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素,Java不提供直接继承自Collection的类,只提供继承它的子接口(List和Set) Collection接口存储一组不唯一,无序的对象; 2 List接口: LIst接口是一个有序的Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引来访问List中的元素,第一个元素的索引是0,而且允许有相同的元素; LIst接口存储一组不唯一,有序(插入顺序)的对象; 3 Set接口: Set具有与Collection完全一样的接口,只是行为上不同,Set不保存重复的元素; Set接口存储一组唯一,无序的对象; 4 SortedSet接口: 继承于Set保存有序的集合; 5 Map接口: Map接口存储一组键值对象,提供key到value的映射; 6 Map.Entry: 描述在一个Map中的一个元素(键值对),是一个Map的内部接口; 7 SortedSet: 继承于Map,使key保持在升序排列; 8 Enumeration: 已经被迭代器取代; 总结:Set和List的区别:
-
Set接口存储唯一,但无序的数据;List存储的是有序,但不唯一的数据;
-
Set检索效率低下,删除和插入效率高;插入和删除不会引起元素位置改变;
-
List和数组类似,可以动态增长,根据实际存储数据的长度自动增长List的长度;查找效率高,插入和删除效率低,因为会引起其他元素位置改变;
-
-
-
集合实现类:
-
Java提供了一套实现了Collection接口的标准集合类;
序号 类描述 1 AbstractCollection: 实现了大部分的结合接口; 2 AbstractList: 继承于AbstractCollection并且实现了大部分List接口; 3 AbstractSqquentialList: 继承于AbstractList,提供了对数据元素的链式访问而不是随机访问; 4 LinkedList: 该类实现了List接口,允许有null元素,主要用于创建链表数据结构,该类没有同步方法,如果多个线程同时访问一个List,则必须自己实现访问同步,解决方法就是在创建List时候构造一个同步的List; LinkedList查找效率低; 5 6 7 8 9 10 -
笔记:
-
-
-
集合算法:
-
如何使用迭代器:
-
代码案例:
public class ListDemo01 {
public static void main(String[] args) {
//创建集合
ArrayList<String> arrayList=new ArrayList<>();
arrayList.add("Google");
arrayList.add("baidu");
arrayList.add("haha");
//获取迭代器
Iterator<String> it=arrayList.iterator();
System.out.println(it.next());//Google
//循环输出
while (it.hasNext()){
System.out.println(it.next());//Google baidu haha
}
}
}
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律