初识java集合——队列

有两个端头的队列,称为双端队列。可以让人们有效的在头部和尾部同时添加或删除元素
* 不支持在队列中间添加元素
*
*【 优先级队列】
* 可以按照任意的顺序插入,却总是按照排序的顺序进行检索,无论何时调用remove,返回的是
* 当前优先队列中最小的元素,然而优先级队列并没有对所有元素进行排序
* 如果用迭代器的方式,处理这些元素,并不需要对他们进行排序
*
* 优先级队列使用了堆(heap)这个优雅高效的数据结构,对树执行添加和删除操作时,最小的元素总能
* 移动到根节点
*
* 与TreeSet一样,优先级队列既可以保存实现了Comparable接口的类对象,也可以保存在构造器中
* 提供比较器的对象
*
* 优先级队列常常用于任务调度,每当启动一个任务的时候,都将优先级最高的任务从队列中删除(习惯上
* 将1设为“最高”优先级,所以会将最小的元素删除)
* */

 1 //priorityQueue
 2 public static void main(String[] args) {
 3     PriorityQueue<GregorianCalendar> pq = new PriorityQueue<>();
 4     pq.add(new GregorianCalendar(1906, Calendar.DECEMBER, 9));
 5     pq.add(new GregorianCalendar(1815, Calendar.DECEMBER, 10));
 6     pq.add(new GregorianCalendar(1903, Calendar.DECEMBER, 3));
 7     pq.add(new GregorianCalendar(1910, Calendar.JUNE, 22));
 8
 9     System.out.println("Iterator over elements...");
10     for(GregorianCalendar g : pq) {
11         System.out.println(g.get(Calendar.YEAR));
12     }
13
14     System.out.println("Removing elements...");
15     while(!pq.isEmpty()) {
16         System.out.println(pq.remove().get(Calendar.YEAR));
17     }
18 }
时间: 2024-08-05 12:43:26

初识java集合——队列的相关文章

初识Java集合框架(Iterator、Collection、Map)

1. Java集合框架提供了一套性能优良.使用方便的接口和类,它们位于java.util包中 注意: 既有接口也有类,图中画实线的是类,画虚线的是接口 使用之前须要到导入java.util包 List和Set是Collection的子接口,ArrayList和LinkedList是List的两个实现类,HashSet和TreeSet是Set的两个实现类 重点:ArrayList.LinkedList和HashSet Map接口对应的集合是以K-V键值对的方式存储数据的,不同于Collection

初识java集合——映射表(Map)

*映射表 * java类库为映射表提供了两个通用的实现 HashMap和TreeMap * HashMap对键进行散列,TreeMap用键的整体顺序对元素进行排序,构建成搜索树 * * 与Set相似,HashMap的速度要比TreeMap要快一点,同时不需要按照排列访问,也应该选择HashMap * 注意,键的值必须是唯一的,如果第二次put了一个同样的键值进去,第二次的值会取代第一次的值,put会 * 返回用这个键参数存储的上一个值 * * 我们可以获取Map的视图,这是一组实现了Collec

初识java集合——迭代器

* Collection接口中有2个基本的方法 * add和iterator * * add(E e)是用于向集合中添加元素,如果添加元素成功,则返回true, 反之为false(例如向集里面添加,因为集是不允许重复的) * * Iterable接口只包含了一个方法 * Iterator<E> iterator(); * 编译器将foreach循环翻译为带有迭代器的循环 * foreach可以与任何实现了Iterable接口的对象一起工作 * Collection接口扩展了Iterable接口

初识java集合——链表

* 链表中的每个节点,存放着上一个节点的引用和下一个节点的引用 * 相对于泛型集合,链表是一个有序集合,每个对象的位置十分的重要 * 链表的add默认也是添加到尾部的 * * 链表的添加删除操作往往借助迭代器来完成,参见IteratorIntro * * 对于链表的遍历,绝对不要使用(代码区-1)的方式,例如get(3),要从头开 * 始到3的索引,get(7),又得从头开始到7的位置,效率非常的低. * 因为LinkedList对象不做任何缓存位置信息操作 * //代码区-1 for( int

初识java集合——树集

*TreeSet与HashSet相比,树集是有序集合,对树集遍历,每个值将自动按照排序顺序呈现. * TreeSet当前使用的是红黑树,每次将一个元素添加到树中时,都将被放置正确的位置之中 * * 在TreeSet中添加元素的速度要快于数组和链表,但慢于散列表(HashSet) * * TreeSet在默认情况下,假定插入的元素实现了Comparable接口,该接口值返回负数,表明a位于b之前 * * public interface Comparable<T> * { * int compa

初识java集合——散列表(HashTable)

[散列表]为每个对象计算一个整数,称为散列码(是由对象的实例域产生的一个整数)更确切的说 * 不同实例域的对象产生不同的散列码 * * 如果自定义类,就要负责实现这个类的hashcode,注意:自己实现的hashcode方法应该与equals方法兼容 * 即如果a.equals(b) 为true a和b必须具有相同的散列码 * * 在java中,[散列表]用链表数组实现.每个列表被称为桶.想要查找表中对象,先计算散列码,然后与桶的总数取余 * 所的余数就是桶的索引.当桶中没有其他元素时,很幸运可

初识java集合——其他集合

* 弱散列映射表(WeakHashMap) * 如果有一个值,对应的键已经不再使用了,将会出现什么情况呢 * 假定对某个键的而最后一次引用已经消亡,不再有任何途径引用这个值对象了,但是由于程序中任何 * 部分没有再引用这个键,所以这个键/值无法从Map中删除. * 遗憾的是,垃圾回收器跟踪活动的对象,只要Map对象时活动的,其中的所有桶也都是活动的,它们不能被回收. * 当对键的唯一引用来自散列表条目时,这一数据结构将于垃圾回收器协同工作一起删除键/值对 * * 下面是对于[弱散列映射表]的机制

java集合详解(附栈,队列)

1 集合 1.1 为什么会出现集合框架 [1] 之前的数组作为容器时,不能自动拓容 [2] 数值在进行添加和删除操作时,需要开发者自己实现添加和删除. 1.2 Collection接口 1.2.1 Collection基础API Java集合框架提供了一套性能优良.使用方便的接口和类,它们位于java.util包中. Collection表示集合的根接口,可以看成一个容器,存储了很多对象,这些对象称为Collection元素.Collection要求元素必须是引用数据类型. Collection

Java—集合框架List

集合的概念 现实生活中:很多的事物凑在一起 数学中的集合:具有共同属性的事物的总和 Java中的集合类:是一种工具类,就像是容器,存储任意数量的具有共同属性的对象 集合的作用 在类的内部,对数据进行组织(针对作用与意义一样的属性,将他们放到一个集合中) 简单而快速的搜索大数量的条目 有的集合接口,提供了一系列排列有序的元素,并且可以在序列中快速的插入或删除有关元素 有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型 与数组相比 数组的长度