1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
package
yizhangsanjie;
import
java.util.Iterator;
//必须添加引用
public
class
FixedCapacityStackOfStrings<Item>
implements
Iterable<Item>
{
private
Item []arr;
private
int
N;
//栈的容量
//初始化构造函数
public
FixedCapacityStackOfStrings(
int
cap)
{
arr=(Item[])
new
Object
[cap];
}
//扩大栈的容量
public
void
resize(
int
max)
{
//将大小为N的数组扩大到一个新的大小为max的数组中
Item[] temp=(Item[])
new
Object
[max];
for
(
int
i=
0
;i<N;i++)
{
temp[i]=arr[i];
}
arr=temp;
//重新修改数组
}
//判断栈是否为空
public
boolean isEmpty()
{
return
N==
0
;
}
//栈的容量大小
public
int
size()
{
return
N;
}
//进栈操作
public
void
push(Item item)
{
if
(N==arr.length)
//判断栈是否满了
resize(
2
*arr.length);
arr[N++]=item;
}
//出栈操作
public
Item pop()
{
Item item=arr[--N];
arr[N]=
null
;
//避免对象游离
if
(N>
0
&&N==arr.length/
4
)
//如果数组太大就减半
resize(arr.length/
2
);
return
item;
}
public
Iterator<Item> iterator()
{
return
new
ReverseArrayIterator();
}
private
class
ReverseArrayIterator
implements
Iterator<Item>
{
private
int
i=N;
public
boolean hasNext()
{
return
i>
0
;
}
public
Item next()
{
return
arr[--i];
}
public
void
remove()
{
}
}
}
|
Iterator与iterable的区别
最新推荐文章于 2024-05-04 22:39:20 发布