[JAVA]《Java 核心技术》(三)泛型、集合

1. Logger
层次
 
和配置
 
 
2. 泛型
 
意味着编写的代码可以被很多不同类型的对象所重用。
 
3 .extends 
 
eg: T extends Comparable
 
T extends A & B
 
4. 虚拟机没有泛型,擦除。
 
5. 通配符
?
? extends A
 
6. super
 
===============
7.集合
 
8. 迭代器接口
获得下个元素。 next()
判断是否有下一个元素 hasNext()
Collection<String> c =..
Interator<String> iter = c.iterator()
while(iter.hasNext()){
     String ele = iter.next();
}
 
//删除 iter.remove()
 
迭代器是占位置的,是两个元素之间的纽带,虽然删除了某个元素,但这个迭代器纽带仍然维持的。所以不能2次连续调用remove
iter.remove()
iter.remove()
 
或用for
for (String element : c){
}
 
9 链表
List<String> staff = new LinkedList<String>();
staff.add("Amy")
staff.add("Bob")
 
Iterator iter = staff.iterator()
String first = iter.next()
 
String second = iter.next()
iter.remove()
 
listIterator可以反向遍历。
 
10.ArrayList
动态再分配
 
11.散列集
eauals,hashCode要对应
不关心顺序的时候,用hashSet
 
12. TreeSet
SortedSet<String> sorter = new TreeSet<String>();
将一个元素添加到树种要比添加到散列中蛮。与将元素添加到数组或链表的正确位置上还是要快很多的。
树中 n 个元素,log 2N次
TreeSet比HashSet慢,但可以自动地对元素进行排序。
 
13.队列与双端队列
Queue
Deque
 
14 优先级队列
PriorityQueue
 
15 映射表
Map,HashMap,TreeMap,SortedMap
keySet()
for(Map.Entry<String, Employee> entry: staff.entrySet()){
     String key = entry.getKey();
     Employee value = entry.getValue();
}
 
put方法覆盖
containsKey
containsValue
values()
 
16 弱散列映射表
WeakHashMap
比如有些键已经不再使用,但由于整个散列表是活动的,所以垃圾回收期不回收他们。
周期性检查若引用
 
LinkedHashSet
LinkedHashMap
 
EnumSet
EnumSet<Weekday> all = EnumSet.allOf(Week.class)
EnumMap
EnumMap<Weekday,Employee> persionInCharge = new EnumMap<Weekday, Employee> (Weekday.class);
 
IdendifyHashMap
标识散列映射表
键的散列值不是用hashCode来计算的,是用System.identityHashCode方法计算的
根据内存地址来计算,即用的 == ,而不是equals
在实现对象遍历算法(对象序列化)时,这个类非常有用,可以用来跟踪每个对象的遍历状况。
 
17. 框架
集合有两个基本的接口
Collection和Map
 
Iterable
Collection
List, Set, Queue
      SortedSet ,Deque
 
Map
SortedMap
 
Iterator
ListIterator
RandomAccess接口
 
AbstractXX
 
集合框架中的遗留类
 
List
AbstractList
Vector -->RandomAccess
Stack
 
Map
Hashtable
Properties
 
18 视图与包装器
1.轻量级包装器
Arrays.asList()方法
注意:返回的不是一个ArrayList,是一个视图对象,带有访问底层数组的get/set方法
改变数组大小的所有方法都会抛异常。
 
subList()
 
clear()
 
视图机制有助于确保常规集合的线程安全
 
Collections.checkedList()
 
19批操作
求集合交集 retainAll
removeAll
 
20 集合与数组之间的转换
 
数组 --> 集合 asList
 
集合 --> 数组 toArray(). 注意 类型是 Object []
 
或者 String []values = staff.toArray(new String[staf.size()])
但不能 String []values = (Object []) staff.toArray();这样编译不错误,但运行会抛异常的。
 
21.算法
max
sort排序
Collections类的sort方法可以实现了List接口的结合进行排序
可以指定排序方法的
Comparator<Item> iterComp = new Comparator<Item>(
{
     public int compare(Item a, Item b){
          return a.partNumber - b.partNumber;
     }
}
)
Collections.sort(items,iterComp);
 
Collections.sort(staff,Collections.reverseOrder());
 
Collections.shuffle()
打乱顺序
 
22. 二分查找
Collections.binarySearch()
 
23. BitSet
posted @ 2013-12-01 11:31  akingseu  阅读(266)  评论(0编辑  收藏  举报