1
- ## 泛型的实际应用
1
+ <!-- TOC -->
2
2
3
- ### 实现最小值函数
3
+ - [ 0.0.1. 泛型的实际应用:实现最小值函数] ( #001-%e6%b3%9b%e5%9e%8b%e7%9a%84%e5%ae%9e%e9%99%85%e5%ba%94%e7%94%a8%e5%ae%9e%e7%8e%b0%e6%9c%80%e5%b0%8f%e5%80%bc%e5%87%bd%e6%95%b0 )
4
+ - [ 0.0.2. 使用数组实现栈] ( #002-%e4%bd%bf%e7%94%a8%e6%95%b0%e7%bb%84%e5%ae%9e%e7%8e%b0%e6%a0%88 )
5
+ - [ 0.0.3. 实现线程安全的 LRU 缓存] ( #003-%e5%ae%9e%e7%8e%b0%e7%ba%bf%e7%a8%8b%e5%ae%89%e5%85%a8%e7%9a%84-lru-%e7%bc%93%e5%ad%98 )
6
+
7
+ <!-- /TOC -->
8
+
9
+ ### 0.0.1. 泛型的实际应用:实现最小值函数
4
10
5
11
自己设计一个泛型的获取数组最小值的函数.并且这个方法只能接受Number的子类并且实现了Comparable接口。
6
12
@@ -23,10 +29,7 @@ int minInteger = min(new Integer[]{1, 2, 3});//result:1
23
29
double minDouble = min(new Double []{1.2 , 2.2 , - 1d });// result:-1d
24
30
String typeError = min(new String []{" 1" ," 3" });// 报错
25
31
```
26
-
27
- ## 数据结构
28
-
29
- ### 使用数组实现栈
32
+ ### 0.0.2. 使用数组实现栈
30
33
31
34
** 自己实现一个栈,要求这个栈具有` push() ` 、` pop() ` (返回栈顶元素并出栈)、` peek() ` (返回栈顶元素不出栈)、` isEmpty() ` 、` size() ` 这些基本的方法。**
32
35
@@ -39,14 +42,14 @@ public class MyStack {
39
42
private int count;// 栈中元素数量
40
43
private static final int GROW_FACTOR = 2 ;
41
44
42
- // TODO: 不带初始容量的构造方法。默认容量为8
45
+ // 不带初始容量的构造方法。默认容量为8
43
46
public MyStack () {
44
47
this . capacity = 8 ;
45
48
this . storage= new int [8 ];
46
49
this . count = 0 ;
47
50
}
48
51
49
- // TODO: 带初始容量的构造方法
52
+ // 带初始容量的构造方法
50
53
public MyStack (int initialCapacity ) {
51
54
if (initialCapacity < 1 )
52
55
throw new IllegalArgumentException (" Capacity too small." );
@@ -56,30 +59,30 @@ public class MyStack {
56
59
this . count = 0 ;
57
60
}
58
61
59
- // TODO: 入栈
62
+ // 入栈
60
63
public void push (int value ) {
61
64
if (count == capacity) {
62
65
ensureCapacity();
63
66
}
64
67
storage[count++ ] = value;
65
68
}
66
69
67
- // TODO: 确保容量大小
70
+ // 确保容量大小
68
71
private void ensureCapacity () {
69
72
int newCapacity = capacity * GROW_FACTOR ;
70
73
storage = Arrays . copyOf(storage, newCapacity);
71
74
capacity = newCapacity;
72
75
}
73
76
74
- // TODO: 返回栈顶元素并出栈
77
+ // 返回栈顶元素并出栈
75
78
private int pop () {
76
79
if (count == 0 )
77
80
throw new IllegalArgumentException (" Stack is empty." );
78
81
count-- ;
79
82
return storage[count];
80
83
}
81
84
82
- // TODO: 返回栈顶元素不出栈
85
+ // 返回栈顶元素不出栈
83
86
private int peek () {
84
87
if (count == 0 ){
85
88
throw new IllegalArgumentException (" Stack is empty." );
@@ -88,12 +91,12 @@ public class MyStack {
88
91
}
89
92
}
90
93
91
- // TODO: 判断栈是否为空
94
+ // 判断栈是否为空
92
95
private boolean isEmpty () {
93
96
return count == 0 ;
94
97
}
95
98
96
- // TODO: 返回栈中元素的个数
99
+ // 返回栈中元素的个数
97
100
private int size () {
98
101
return count;
99
102
}
@@ -121,4 +124,7 @@ for (int i = 0; i < 8; i++) {
121
124
}
122
125
System . out. println(myStack. isEmpty());// true
123
126
myStack. pop();// 报错:java.lang.IllegalArgumentException: Stack is empty.
124
- ```
127
+ ```
128
+
129
+
130
+
0 commit comments