java编程思想笔记17-容器深入研究



17.1 完整的容器分类法

java5添加了
Queue接口(LinkedList已经视线了该接口并做了修改),及其实现PriortyQueue和各种风格的BlockingQueue,其BlokingQueue为多线程使用
ConcurrentMap接口及其实现ConcurrentHashMap,也是用于多线程机制的.
CopyOnWriteArrayList和CopyOnWriteArraySet,也是用于多线程机制的.
EnumSet和EnumMap,为使用enum而设计的Set和Map的特殊实现,

17.2 填充容器

addAll()和Collections.fill

17.3 Collection的功能方法

api

17.4 可选操作

实现类选择的去实现抽象方法,并不是一定会重写方法.

17.4.1 未获支持的操作

数组转化为集合
Arrays.asList();,对集合中的元素进行增删操作.

17.5 List的功能和方法

17.6 Set的存储顺序

HashSet,TreeSet,LinkedHashSet

17.7 队列

除了并发应用,Queue在java5中仅有的两个实现是LinkedList和PriorityQueue,它们的差异在于排序行为和不是性能.

17.7.1 优先级队列

PriortyQueue

17.7.2 双向队列

LinkedList
addFirst(),addLast();getFirst();getLast();

17.8 Map

映射表(关联数组)的基本思想是它维护的键-值对关联,因此可以使用键来查找值.

17.8.1 性能

性能是映射表中的一个重要问题,当在get()中使用线性搜索时,执行速度会相当的慢,而这正是HashMap提高速度的地方.HashMap使用了特殊的值,乘坐散列码,用来取代对键的缓慢搜索.散列码是相对唯一的.用以代表对象的int值,它是通过将该对象的某些信息进行转换而生成的.所有的对象都有hashCode方法,都能生成散列码.HashMap就是使用对象的HashCode进行快速查询的,此方法能够显著的提高性能.

17.8.2 StortedMap

TreeMap是其现阶段的一个唯一实现,可以确保键出去排序状态.

17.8.3 linkedHashMap

17.9 散列和散列码

17.9.1 覆盖hashcode()

设计hashCode时最重要的因素就是:无论何时,对用同一个对象调用hashCode(),都应该生成同样的值.


17.10 选择接口的不同实现

17.10.2 对list的选择

17.10.3 对Set的选择

17.10.5 对Map的选择

17.11 实用方法





















你可能感兴趣的:(java,java基础)