您的位置:首页 > 编程语言 > Java开发

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

2013-12-01 11:31 567 查看
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.next()
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: