ThinkingInJava----第11章 持有对象

第11章 持有对象

11.1 泛型和类型安全容器

ArrayList:可以自动扩充自身尺寸的数组

11.2 基本概念Java 容器的用途是“保存对象”Collection(一个独立元素的序列) : 所有的Collection都可以用foreach遍历                                   List                                   QueueMap(字典关联数组):

11.3 添加一组元素Arrays.asList() 接受一个数组或是用逗号分隔的元素列表,并将其转化为一个List。当直接使用它作为输出,将其当作List,这种情况下底层表示的数组,因此不能改变其大小。Collection.addAll() 接受一个Collection对象,以及数组或用逗号分隔的列表,将元素添加到Collection。

11.4 容器的打印 Java 容器主要有两种类型,区别在于容器的每个“槽”保存元素的个数(例如:Set,List,Queue 保存一个对象 ,Map 保存两个对象)

------------------- ArrayList(大量随机访问) Collection ------------------ List(自动扩充容量排好序) ------------------- LinkedList(插入删除)直接作为栈使用                                                                                         ------------------- HashList(查找最快使用散列函数)

------------------ Set(集合)  ------------------- TreeSet(将元素储存在红黑树数据结构中,元素排序状态)                                                            ------------------- LinkdHashSet(以插入顺序保持元素)

Map     ------------------- HashMap            ------------------- TreeMap            ------------------- LinkedHashMap(插入查找)

11.6 迭代器迭代器也是一种设计模式,它是一个对象,作用是遍历选择序列的每一个元素。此外,迭代器被称为轻量级对象:创建对象代价小,

Iterator:1)Iterator 将准备返回序列的第一个元素。         2)next() 返回序列的下一个元素。         3)hasNext() 检查序列中是否还有下一个元素         4)remmoce() 将迭代器新近元素删除IteratorList

Stack:叠加栈

Set:(集合)不保存重复元素,常被使用的是测试归属性(询问某个对象是否在某个set中),因此查找就是Set中最重要的操作,所以    HashSet 的实现就是专门对快速查找进行了优化。    Set 其实就是 Collection,只是表现行为不同,Set 基于对象值来确定归属性。Map:对象映射到其它对象是解决编程问题的杀手锏。(检查Random的随机性)    容易扩展到多维。例如:跟踪拥有多个宠物的人 Map<Person, List<Pet>>Queue:先进先出容器,常被用作一种可靠的将对象,从程序的某个区域传到另一个区域的途径,在并发编程中十分重要       LinkedList 提供了支持队列的行为,并且它实现了Queue接口(可以作为 Queue的实现)PriorityQueue

11.12 Collection 和 IterationCollection:是描述所有序列容器的共性接口,被认为是附属接口,因为要表示若他从其它若干接口的共性而出现的接口。用迭代器而不是Collection 来表示容器之间的共性。容器之间的所有共性都是通过迭代器达成的。

11.13 Foreach 与迭代器foreach : 主要用于数组,也可用于人和 Collection 对象Itereable 接口被foreach用来在序列中移动,类实现了Iterable的类,都可以将它用于foreach()语句。
时间: 2024-08-06 18:21:34

ThinkingInJava----第11章 持有对象的相关文章

第11章 持有对象

11.1节: 以ArrayList为例子,说明不使用泛型的ArrayList的坏处: 任何Object的子类对象,都可以被添加. 在使用ArrayList之处,编译时不能发现类型不匹配错误,运行时才能发现. 使用get()函数取出对象之后,先要进行类型转换才能使用.

Java编程思想 - 第11章 持有对象

· 容器类: 1. Collection: List, Set, Queue 2. Map · List<Apple> apples = new ArrayList<Apple>(); 这种方式并非总能奏效,因为某些类具有额外的功能,例如,LinkList具有在List接口中未包含的额外方法,而TreeMap也具有在Map接口中未包含的方法.如果你需要使用这些方法,就不能将它们向上转型为更通用的接口. · Collection.addAll()成员方法只能接受另一个Collecti

Java编程思想(第十一章持有对象)

1. 第11章 持有对象 java通过使用容器类来储存对象,与普通数组不同的是,普通数组的长度不可变. 1.1. 泛型与类型安全的容器 使用预定义的泛型,它指定了这个容器实例可以保存的类型,通过使用泛型,就可以在编译器防止将错误类型的对象放置到容器中. public class gerbil { private int gerbilNumber; public gerbil(int gerbilNumber){ this.gerbilNumber = gerbilNumber; } public

《Java编程思想》笔记 第十一章 持有对象

1.保存对象引用 1.数组,数组具有固定大小 2.容器类,可自动调节大小 2.容器类 List  Set  Queue  Map 及常用的实现类 2.1 Collectioon (接口) 保存独立的元素序列,未使用泛型时保存Object对象.(独立并不是不同) 2.1.1 List(接口) 按插入顺序保存 ArrayList :先当于大小可变的数组,随机访问快,插入移除慢. LinkedList :插入移除快,访问慢. 2.1.2 Set(接口) 不能有重复元素 1.HashSet :最快获取元

《JAVA编程思想》学习笔记——第十一章 持有对象

JAVA容器类类库的用途是 "保存对象",并将其划分为两个不同的概念: 1) Collection.一个独立元素的序列,这些元素都服从一条或多条规则.List必须按照插入的顺序保存元素,而Set不能用重复元素.Queue按照排队规则来确定对象产生的顺序(通常与它们被插入的顺序相同) 2)Map.一组成对的 "键值对" 对象,允许你使用键来查找值.ArrayList允许你使用数字 Arrays.asList()方法接受一个数组或是一个用逗号分隔的元素列表(使用可变参数

自学java 第十一章持有对象

这几天简单学习了java的容器类,对于它们有了基础的了解和运用. 容器类按照保存对象的个数分为两类:Collection和Map. 1.Collection类型,它是保存独立元素的序列.它的子类型有List,Set,Queue: 2.Map类型,它是有一组成对的"键值对"对象构成的序列. 对于List有两种类型:ArrayList用于随机访问元素,但在List中做插入删除操作速度较慢(类似顺序表);LinkedList在插入删除操作代价较小,但在进行元素的随机访问时相对较慢(类似链表)

第十一章 持有对象

一.基本概念 Java 容器类类库的用途是"保存对象",并将其划分为两个不同的概念: 1)Collection.一个独立元素的序列,这些元素都服从一条或多条规则.List必须按照插入的顺序保存元素,而Set不能有重复元素.Queue按照排队规则来确定对象生产的顺序(通常与它们被插入的顺序相同). 2)Map.一组成对的"键值对"对象,允许你使用键来查找值.ArrayList允许你使用数字来查找值,因此在莫中意义上讲,它将数字与对象关联在了一起.映射表允许我们使用另一

Java编程思想之十一 持有对象

如果一个程序只包含固定数量的且其生命期都是已知的对象,那么这是一个非常简单的程序. 11.1 泛型和类型安全的容器 使用ArrayList:创建一个实例,用add()插入对象,然后用get()访问对象,此时需要使用索引,像数组一样,但不是要[]. import java.util.ArrayList; public class ApplesAndOrangesWithoutGenerice { @SuppressWarnings("unchecked")//不受检查异常的警告 publ

“持有对象”小记

关于<Java编程思想>第十一章"持有对象"一个内容的思考 在书中第244页,提到了这样的一个方法:Collection.shuffle() 方法.其功能是打乱一个 List 中的元素的顺序. 在这一页的下方,举了这样一个例子: 根据这段代码,如果直接来看,可以这样分析: list1引用指向了一个全新的ArrayList,其内容为数组ia的元素.当其调用了Collection.shuffle() 方法之后,就会将元素顺序打乱而不会打乱数组ia的元素顺序. 对于list2,大