zoukankan      html  css  js  c++  java
  • ThinkingInJava----第11章 持有对象

    第11章 持有对象

    11.1 泛型和类型安全容器

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

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

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

    11.13 Foreach 与迭代器
    foreach : 主要用于数组,也可用于人和 Collection 对象
    Itereable 接口被foreach用来在序列中移动,类实现了Iterable的类,都可以将它用于foreach()语句。
  • 相关阅读:
    匿名,排序,过滤,映射,递归函数
    内置函数图
    for(var i in items) 和 for(var i;i<items.length;i++) 区别
    js中var、let、const的区别 (待总结)
    eclipse拉取git项目 Read timed out after 30,000 ms
    eclispe git config配置文件配置远程仓库
    git pull出错:cannot pull into a repository with state: merging_resolved"
    HttpClient之用CloseableHttpClient发送post请求
    注意设置httpclient连接数
    This compilation unit is not on the build path of java project (此编译单元不在java项目的生成路径上)
  • 原文地址:https://www.cnblogs.com/lifehrx/p/6663564.html
Copyright © 2011-2022 走看看