java核心技术10阅读(八)-Java集合

集合框架
Java 集合类库也将接口( interface) 与 实 现( implementation) 分离。
可以使用接口引用集合类,方便切换类的使用。

Queue<Customer> expresslane = new CircularArrayQueue<>(100);
 expressLane.add(new Customer("Harry"));
 //or
 Queue<Customer> expressLane = new LinkedListQueue<>(100);

上述是队列的实现,其中循环数组是一个有界集合,即容量有限。如果程序中要收集的对象数量没有上限,就最好使用链表来实现。链表易于插入、删除,,但是查找较为麻烦。
集合常见接口
collection接口,有add和iterator方法,iterator方法用于返回一个实现了 Iterator 接口的对象。
iterator接口,next方法,可以逐个访问集合中的每个元素,在调用next 之前调用 hasNext 方法。如果迭代器对象还有多个供访问的元素,这个方法就返回 true。

在这里插入图片描述
“ for each” 循环可以与任何实现了 Iterable 接口的对象一起工作,这个接口只包含一个
抽象方法,Collection接口扩展了 Iterable 接口。因此,对于标准类库中的任何集合都可以使用“ foreach” 循环。
Iterator 接口的 remove方法将会删除上次调用 next 方法时返回的元素。

泛型使用方法
,Collection接口声明了很多有用的泛型方法,所有的实现类都必须提供这些方法。
因此类 AbstractCollection, 它将基础方法 size 和 iterator 抽象化了,但是在此提供了例行的泛型方法,方便用户使用
常见的泛型方法有contain(Object obj)和removelf()

具体的集合在这里插入图片描述

以 Map结尾的类之外,其他类都实现了 Collection接口,而以 Map结尾的类实现了 Map接口。
链表
在 Java 程序设计语言中,所有链表实际上都是双向链接的
LinkedList.iterator() //返回实现了iterator接口的迭代器对象
LinkedList.listitserator()返回实现了listitserator接口的迭代器对象
两者的区别是listitserator,由于迭代器是描述集合中位置的,所以这种依赖于位置 的 add方法将由迭代器负责,iterator没有add方法。set 方法用一个新元素取代调用 next 或 previous方法返回的上一个元素。对于并发修改列表的检测肴一个奇怪的例外。链表只负责跟踪对列表的结构性修 改,例如,添加元素、删除元素。set 方法不被视为结构性修改。
可以利用光标法判断listitserator或者iterator中迭代器的位置
数组
ArrayList 封 装了一个动态再分配的对象数组。
建议在不需要同步时使用 ArrayList, 而不要使用 Vector。
散列集
以快速地査找所需要的对象,散列表为每个对象计算一个整数, 称为散列(hashcode)。散列码是由对象的实例 域产生的一个整数。
在 Java中,散列表用链表数组实现。每个列表 被称为桶(bucket),储存方式如下
在这里插入图片描述
散列表可以用于实现几个重要的数据结构,其缺点是无法控制元素出现的次序。。其中最简单的是 set 类型。
set 是没有重复元素的元素集合。set 的 add方法首先在集中查找要添加的对象,如果不存在,就将这个对象添加进去。
树集
树集是一个有序集合( sorted collection ) o 可以以任意顺序将元素插入到集合中。在对集合进行遍历时,每个值将 自动地按照排序后的顺序呈现。
Comparator.comparing返回一个Comparator,Item::getDescription将比较的方法传入

new TreeSet<>(Comparator.comparing(Item::getDescription));

队列与双端队列
可以让人们有效地在头部和尾部同时添加或删除元 素。不支持在队列中间添加元素。
优先级队列
优先级队列使用了一个优雅且高效的数据结构,称为堆(heap)。堆是一 个可以自我调整的二叉树,对树执行添加(add) 和删除(remore) 操作,可以让最小的元素 移动到根,而不必花费时间对元素进行排序。
优先级队列(priority queue) 中的元素可以按照任意的顺序插人,却总是按照排序的顺序
进行检索。

发布了15 篇原创文章 · 获赞 1 · 访问量 128

猜你喜欢

转载自blog.csdn.net/qq_17236715/article/details/105025853