`

《Java核心技术(第八版)》笔记之第13章集合

 
阅读更多

13.1 集合接口

1. 使用迭代器Iterator进行访问时,元素被访问的顺序取决于集合类型。如果对ArrayList进行迭代,会从索引0开始,每迭代一次,索引值加1;如果是HashSet,那每个元素将会按照某种随机的次序出现。 (P558)

 

13.2 具体的接口

1.在Java程序设计语言中,所有链表实际上都是双向链接的(doubly linked)---即每个结点还存放着指向前驱节点的引用。 (P562)

2. 为避免集合发生并发修改的异常,请遵循下述简单规则:可以根据需要给容器附加许多的迭代器,但是这些迭代顺只能读取列表。另外,再单独附加一个既能读又能写的迭代器。----即读写分离。(P566)

3. Map中键可以为null,但是值不能为null。 (P584)

4.IdentityHashMap(标识散列映射表)

  在对两个对象进行比较时,IdentityHashMap类使用==,而不是使用equals。也就是说,不同的键对象,即使内容相同,也被视为不同对象。在实现对象遍历算法(如对象序列化)时,这个类非常有用,可以用来跟踪每个对象有遍历情况。 (P588)

 

13.3 集合框架

1.视图与包装器

keySet方法返回一个实现Set接口的类对象,这个类的方法对原映射表进行操作,这种集合称为视图.(P592)

(1). 轻量级集包装器

    Arrays.asList方法,将数组返回为一个可修改但不可更改大小的List

(2) 不可修改视图

   Collections的unmodifiable系统方法,返回不可修改、且不可更改大小的集合接口

(3) 子范围(subList)、同步视图(synchronized)、被检验视图(checkedList)等等

(4)通常,视图具有一些局限性,即可能只可以读、无法改变大小、只支持删除而不支持插入等。如果进行不恰当的操作,受限制的视图就会抛出一个UnspportedOperationException。

2.集合与数组的互换

(1)、数组到集合

   String[] values = ...;

   HashSet(String) staff = new HashSet<String>(Arrays.asList(values));

(2)、集合到数组

   staff.toArray(new String[staff.size()]);

   在这种情况下,没有创建任何数组;也避免了直接使用toArray方法返回Object的现象。

 

13.4 算法

 1. 如果想按照降序对列表进行排序,可以使用一种非常方便的静态方法Collections.reverseOrder()。 (P601)

 e.g:Collections.sort(staff,Collections, reverseOrder())

2、一些常用的简单算法

shuffle(List):随机打乱集合的顺序;

copy(List):将一个列表中的元素复制到另一个列表中;

fill(List<T>, T):用一个常量值填充容器;

reverse(List):逆置列表中的元素。

disjoint(Collection, Collection):判断两个集合有没有共同的元素。

分享到:
评论

相关推荐

    java经典教材笔记

    第八章讨论了多线程编程,这是Java中的一个核心概念。多线程允许同时执行多个任务,提高程序效率。线程的创建、同步、通信和死锁处理都是多线程编程中必须掌握的知识点。 第九章涉及泛型的概念,它提供了编写类型...

    Java课堂笔记txt格式

    本套“Java课堂笔记”旨在为学习者提供一个从入门到精通的全面学习路径,通过简洁明了的方式,让学习者在短时间内掌握Java的核心概念和技术。 一、Java基础 Java的基础包括语法特性、数据类型、变量、运算符和控制...

    java lecture note(Java学习笔记)

    Java学习笔记:全面掌握Java编程的核心知识与技能 在当今的软件开发领域,Java作为一种流行的、功能强大的面向对象编程语言,被广泛应用于各种场景,包括Web应用、移动应用、企业级应用等。本篇Java学习笔记旨在为...

    Java_se基础毕向东老师全程笔记

    ### 第十三章至第十五章:Web前端技术 - **HTML**:标记语言,构建网页结构。 - **CSS**:样式表语言,控制页面样式。 - **JavaScript**:脚本语言,实现网页交互。 ### 第十六章:DOM - **文档对象模型**:描述XML...

    java私塾学习笔记整理

    #### 第十三章:多线程 **一、线程的基本概念** 1. **什么是线程**:线程是操作系统能够进行运算调度的最小单位,是进程的一部分。 2. **线程和进程的区别**:线程是进程中的实体,是调度和分配的基本单位;进程则...

    毕向东Java SE视频教程整理笔记

    #### 第十三章至第十五章:Web前端技术 - **HTML/CSS/JavaScript基础**:这部分介绍了构建网页所需的基本技术,包括标记语言HTML、样式表语言CSS以及脚本语言JavaScript。 #### 第十六章:DOM - **DOM解析**:DOM...

    java实战经典学习笔记

    ### Java实战经典学习笔记知识点概览 #### 一、Java概述及开发环境搭建 - **Java概述** - Java是一种广泛使用的高级编程语言,由Sun Microsystems于1995年发布。 - Java的设计目标是“一次编写,到处运行”,这...

    java 学习笔记大全

    Java是一种广泛使用的面向对象的...这份"java 学习笔记大全"应该覆盖了以上所有知识点,通过学习和实践,你可以掌握Java编程的核心技能,无论是进行简单的控制台程序开发,还是复杂的分布式系统设计,都将游刃有余。

    传智播客Java SE基础毕向东老师全程笔记

    #### 第十三章:HTML语言 - **HTML基础知识:** HTML(HyperText Markup Language)用于构建网页结构。 - **标签与属性:** HTML标签用于标记文本,属性用于进一步描述标签。 #### 第十四章:CSS语言 - **CSS基础...

    Java基础笔记总结

    本笔记旨在总结Java的基础知识点,包括JDK的安装与使用、开发工具Eclipse的介绍,以及核心的编程要素如数据类型、运算符和流程控制。 一、JDK JDK(Java Development Kit)是Java开发的核心工具集,包含了编译器...

    李兴华java笔记

    ### Java核心知识精讲 #### 一、Java简介 Java是一种广泛使用的高级编程语言...以上就是从“李兴华java笔记”中提取的核心知识点,涵盖了Java的基础语法、面向对象编程的基本概念和技术点。希望对学习Java有所帮助。

    javase java2ee 笔记

    Java涵盖了JavaSE(标准版)、JavaEE(企业版)和JavaME(微型版)三个版本,其中JavaSE是学习Java的基础,包括了核心的类库和API,如集合框架、I/O流、网络编程等。JavaEE则主要面向企业级应用开发,包含了Web服务...

    张龙 java se课程笔记

    【Java SE课程笔记详解】 Java SE(Standard Edition)是Java平台的核心版本,它为开发桌面应用、服务器端应用以及分布式网络应用提供了基础框架。张龙的Java SE课程笔记是针对初学者和进阶者的一份宝贵资料,涵盖...

    java学习笔记-----给java初学者

    Java学习笔记是专门为Java初学者设计的一套详尽的学习资源,旨在帮助新手快速掌握这门广泛使用的编程语言。这份笔记涵盖了从基础概念到高级特性的全面内容,是学习和复习Java知识的理想工具。 1. **Java简介** ...

    Java入门学习笔记

    ### Java入门学习笔记 #### 一、Java特点与运行原理 **1.1 Java特点** - **简单性:** Java的设计使得它易于学习且避免了许多传统编程语言中存在的复杂性。 - **面向对象:** Java是一种纯面向对象的语言,支持...

    4747-java自考复习资料串讲笔记完整版无水印.doc

    在复习Java时,特别需要注意的是第三、五、六、八章的内容,因为它们占考试分数的大约60%。这些章节可能涵盖类和对象、异常处理、输入/输出流以及集合框架等核心概念。其次,第二、四、七章的内容也非常重要,它们...

    传智播客视频JavaSE学习笔记

    以上是根据传智播客视频JavaSE学习笔记总结的关键知识点,覆盖了Java基础环境配置、字符串操作、多线程编程、集合框架、输入输出流、网络编程、反射机制、正则表达式等多个方面,希望对Java初学者和进阶者有所帮助。

    java基础 .docx

    Java支持二进制、八进制、十进制和十六进制表示数值,可以通过辗转相除法等方法进行不同进制间的转换。 以上只是Java基础知识的一部分,完整的Java学习还包括类、对象、封装、继承、多态、异常处理、IO流、集合框架...

Global site tag (gtag.js) - Google Analytics