首页 > 编程语言 > 详细

《Java核心技术 卷1 基础知识》六

时间:2020-01-31 18:58:17      阅读:51      评论:0      收藏:0      [点我收藏+]

《Java核心技术 卷1 基础知识》

第九章 集合

具体的集合
技术分享图片

上图主要展示了Java类库中的集合,并简要介绍了每个集合类的用途(不包括线程安全集合)

链表与动态数组

在Java中,所有链表(linked list)实际上都是双向链表,在链表中进行删除或者插入元素是非常简单的事情
但Java中的LinkedList不需要像之前在数据结构上学的那样将指针绕来绕去
LinkedList的add方法将对象添加到链表的尾部,若是需要在中间插入元素:

List<String> staff = new LinkedList<>();
staff.add("Amy");
staff.add("Bob");
staff.add("Carl");
ListIterator<String> iter = staff.listIterator();
iter.next();//将指针指向第一和第二个元素中间
iter.add("Juliet");//在第二个元素之前添加“Juliet”

若是删除元素则是利用Iterator接口的remove方法
LinkedList类实现了List接口,而ArrayList类也是实现了List接口,从这可以看出Java类名的定义的含义
ArrayList封装了一个动态再分配的对象数组,但Vector类也能实现该功能
但Vector类的所有方法都是同步的,是线程安全的,而ArrayList方法不是同步的,即非线程安全
若是单线程访问则推荐使用ArrayList类,因为相比之下,ArrayList更快

散列集

在Java中,散列表使用链表数组实现。
技术分享图片

Java集合类库中,提供了一个HashSet类,它实现了基于散列表的值,用add方法添加元素
contains方法快速地查看是否某个元素已经出现在集合中
当不关心集合中的元素顺序时才应该使用HashSet

树集

树集是一个有序集合。

SortedSet<String> sorter = new TreeSet();
sorter.add("Bob");
sorter.add("Aamy");
sorter.add("Carl");
for(String s:sorter) System.out.println(s);

每个值将按照顺序打印出来:Amy Bob Carl。直观上看,集合里的元素可以自动排序(由小到大)
排序是用树结构完成的,当前实现用的是红黑树
要使用树集,必须能够比较元素

队列与双端队列

队列:可以在尾部添加元素,在头部删除元素
有两个端头的队列,即双端队列,可以在头部和尾部用时进行插入或者删除元素

优先级队列

优先级队列中的元素可以按照任意的顺序插入,却总是按照排序的顺序进行检索
也就是说,无论何时调用remove方法,总会获得当前优先级队列中最下的元素

优先级队列并没有对所有的元素进行排序,因为使用了堆(最小堆)这一数据结构来实现

映射

映射用来存放键值对。如果提供了键,就能找到值
Java中提供了两个映射的通用实现:HashMap和TreeMap。这两者都实现了Map接口
HashMap对键进行散列
TreeMap是用键的整体顺序对元素进行排序,并将其组织成搜索树

键是唯一的,不能一个键存放两个值,如果对同一个键两次调用put方法,第二个值会取代第一个值
remove方法用于从映射中删除给定键对应的元素,size方法用于返回映射中的元素数

遗留的集合

1.HashTable类
HashTable类与HashMap类的作用一样,实际上它们拥有相同的接口,但HashTable与Vector类一样是同步的,即线程安全的

2.枚举
遗留集合使用Enumeration接口对元素顺序进行遍历。
该接口有两个方法:hasMoreElements和nextElement。

3 属性映射
属性映射是一个类型非常特殊的映射结构。

  • 键与值都是字符串
  • 表可以保存得到一个文件中,也可以从文件中加载
  • 使用一个默认的辅助表
    • 实现属性映射的Java平台类称为Properties
    • 属性映射通常用于程序的特殊配置选项

4 栈
从1.0版本开始,标准类库中就包含了Stack类,有push和pop方法
还有peek方法,返回栈顶元素却不弹出

5 位集
Java的BitSet类用于存放一个位序列。
如果需要高效地存储位序列(例如,标志)就可以使用位集。

《Java核心技术 卷1 基础知识》六

原文:https://www.cnblogs.com/ASE265/p/12245743.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!