@@ -4,80 +4,82 @@ javaalgorithm
4
4
模仿Java标准库的一些API实现的算法库,包括了数据结构,字符串处理(StringBuilder),图(有向图)。原来是用Python实现的,但是Python实现的并没有经过完整的测试,不能够保证完全的正确性。
5
5
使用Java实现的集合库都经过完整的测试,实际上,我在实现的过程中基本上用的都是自己实现的数据结构。另外的一些算法和工具来自《程序员面试金典》和《剑指offer》中的习题。
6
6
7
+ 注意:项目需要使用java 8编译,因为用到了lambda和stream类库。
8
+
7
9
在实现的过程中也发现了Java集合类库中的一些问题。
8
10
=========
9
11
10
- 1, 并没有实现函数式编程语言中三个经典的操作符,map,filter,reduce
12
+ 1 . 并没有实现函数式编程语言中三个经典的操作符,map,filter,reduce
11
13
12
- 2, toArray方法返回的是Object[ ] 类型,原因是Java不能够通过泛型创建数组,我是通过toVector来实现这个需求的
14
+ 2 . toArray方法返回的是Object[ ] 类型,原因是Java不能够通过泛型创建数组,我是通过toVector来实现这个需求的
13
15
14
- 3, JDK集合类库中所有的迭代器next方法实际上会向下移动一位,而我的集合迭代器中则是在hasNext的时候向下移动一位。
16
+ 3 . JDK集合类库中所有的迭代器next方法实际上会向下移动一位,而我的集合迭代器中则是在hasNext的时候向下移动一位。
15
17
16
18
#数据结构
17
19
18
20
##链表
19
21
20
- ### Vector: 可变数组实现,名字参考C++中同名的类,和集合类库中的ArrayList类似。
22
+ 1 . Vector: 可变数组实现,名字参考C++中同名的类,和集合类库中的ArrayList类似。
21
23
22
- ### LinkedList: 类似于Java中的LinkedList,双向链表实现,同时也实现了Queue接口,因此可以被用作队列。
24
+ 2 . LinkedList: 类似于Java中的LinkedList,双向链表实现,同时也实现了Queue接口,因此可以被用作队列。
23
25
24
26
##栈 (栈并没有继承任何类或者接口(也是Java集合框架中的一个问题))
25
27
26
- ### LinkedStack:使用双向链表实现的一个栈,对于标准的push,pop和head都是O(1)
28
+ 1 . LinkedStack:使用双向链表实现的一个栈,对于标准的push,pop和head都是O(1)
27
29
28
- ### ExtensiveStack:同时记录了栈中的最大值和最小值,来自于金典
30
+ 2 . ExtensiveStack:同时记录了栈中的最大值和最小值,来自于金典
29
31
30
- ### MultiStack:表示多个栈的栈,也就是说这个数据结构中可以有任意多的栈,来自金典
32
+ 3 . MultiStack:表示多个栈的栈,也就是说这个数据结构中可以有任意多的栈,来自金典
31
33
32
34
##队列(暂时不会实现阻塞队列)
33
35
34
- ### PriorityQueue:使用最大堆实现的优先队列
36
+ 1 . PriorityQueue:使用最大堆实现的优先队列
35
37
36
38
##字典
37
39
38
- ### HashMap:使用链接法解决冲突的Map。
40
+ 1 . HashMap:使用链接法解决冲突的Map。
39
41
40
- ### TreeMap:在插入键的时候会保持键的比较顺序,在遍历的时候会按照比较顺序来。
42
+ 2 . TreeMap:在插入键的时候会保持键的比较顺序,在遍历的时候会按照比较顺序来。
41
43
42
- ### LinkedHashMap:类似于HashMap,但是保持了插入顺序。
44
+ 3 . LinkedHashMap:类似于HashMap,但是保持了插入顺序。
43
45
44
46
##集合
45
47
46
- ### Hash
10000
Set:使用HashMap实现的集合
48
+ 1 . HashSet:使用HashMap实现的集合
47
49
48
- ### TreeSet:使用红黑树实现的集合
50
+ 2 . TreeSet:使用红黑树实现的集合
49
51
50
52
##平衡树
51
53
52
- ### AVL树
54
+ 1 . AVL树
53
55
54
- ### 红黑树
56
+ 2 . 红黑树
55
57
56
- ### B树
58
+ 3 . B树
57
59
58
- ### B+树
60
+ 4 . B+树
59
61
60
- ## 前缀树,也叫单词查找树(Trie),通过在每一个节点上使用HashMap来存储子节点,使得Tries可以支持UTF-8
62
+ 5 . 前缀树,也叫单词查找树(Trie),通过在每一个节点上使用HashMap来存储子节点,使得Tries可以支持UTF-8
61
63
62
64
##图
63
65
64
66
##其他
65
67
66
- ### 跳跃表(SkipList)
68
+ 1 . 跳跃表(SkipList)
67
69
68
- ### BitSet
70
+ 2 . BitSet
69
71
70
- ### StringBuilder
72
+ 3 . StringBuilder
71
73
72
74
#算法
73
75
74
76
##排序算法
75
77
76
- ### 快速排序,也是默认的排序方法
78
+ 1 . 快速排序,也是默认的排序方法
77
79
78
- ### 计数排序
80
+ 2 . 计数排序
79
81
80
- ### 基数排序
82
+ 3 . 基数排序
81
83
82
84
83
85
0 commit comments