FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
JavaArithmetic/src/datastructure/array/Array.java at master · sqlcyi2008/JavaArithmetic · GitHub
sqlcyi2008
JavaArithmetic
Repository navigation
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
JavaArithmetic
/
src
/
datastructure
/
array
/
Array.java
Copy path
More file actions
More file actions
Latest commit
History
History
History
149 lines (120 loc) · 3.79 KB
Breadcrumbs
JavaArithmetic
/
src
/
datastructure
/
array
/
Array.java
Copy path
File metadata and controls
149 lines (120 loc) · 3.79 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
package
datastructure
.
array
;
public
class
Array
<
E
> {
private
E
[]
data
;
private
int
size
;
// 构造函数,传入数组的容量capacity构造Array
public
Array
(
int
capacity
) {
data
= (
E
[])
new
Object
[
capacity
];
size
=
0
;
}
// 无参数的构造函数,默认数组的容量capacity=10
public
Array
() {
this
(
10
);
}
// 获取数组的容量
public
int
getCapacity
() {
return
data
.
length
;
}
// 获取数组中的元素个数
public
int
getSize
() {
return
size
;
}
// 返回数组是否为空
public
boolean
isEmpty
() {
return
size
==
0
;
}
// 在index索引的位置插入一个新元素e
public
void
add
(
int
index
,
E
e
) {
if
(
index
<
0
||
index
>
size
)
throw
new
IllegalArgumentException
(
"Add failed. Require index >= 0 and index <= size."
);
if
(
size
==
data
.
length
)
resize
(
2
*
data
.
length
);
for
(
int
i
=
size
-
1
;
i
>=
index
;
i
--)
data
[
i
+
1
] =
data
[
i
];
data
[
index
] =
e
;
size
++;
}
// 向所有元素后添加一个新元素
public
void
addLast
(
E
e
) {
add
(
size
,
e
);
}
// 在所有元素前添加一个新元素
public
void
addFirst
(
E
e
) {
add
(
0
,
e
);
}
// 获取index索引位置的元素
public
E
get
(
int
index
) {
if
(
index
<
0
||
index
>=
size
)
throw
new
IllegalArgumentException
(
"Get failed. Index is illegal."
);
return
data
[
index
];
}
// 修改index索引位置的元素为e
public
void
set
(
int
index
,
E
e
) {
if
(
index
<
0
||
index
>=
size
)
throw
new
IllegalArgumentException
(
"Set failed. Index is illegal."
);
data
[
index
] =
e
;
}
// 查找数组中是否有元素e
public
boolean
contains
(
E
e
) {
for
(
int
i
=
0
;
i
<
size
;
i
++) {
if
(
data
[
i
].
equals
(
e
))
return
true
;
}
return
false
;
}
// 查找数组中元素e所在的索引,如果不存在元素e,则返回-1
public
int
find
(
E
e
) {
for
(
int
i
=
0
;
i
<
size
;
i
++) {
if
(
data
[
i
].
equals
(
e
))
return
i
;
}
return
-
1
;
}
// 从数组中删除index位置的元素, 返回删除的元素
public
E
remove
(
int
index
) {
if
(
index
<
0
||
index
>=
size
)
throw
new
IllegalArgumentException
(
"Remove failed. Index is illegal."
);
E
ret
=
data
[
index
];
for
(
int
i
=
index
+
1
;
i
<
size
;
i
++)
data
[
i
-
1
] =
data
[
i
];
size
--;
data
[
size
] =
null
;
// loitering objects != memory leak
if
(
size
==
data
.
length
/
4
&&
data
.
length
/
2
!=
0
)
resize
(
data
.
length
/
2
);
return
ret
;
}
// 从数组中删除第一个元素, 返回删除的元素
public
E
removeFirst
() {
return
remove
(
0
);
}
// 从数组中删除最后一个元素, 返回删除的元素
public
E
removeLast
() {
return
remove
(
size
-
1
);
}
// 从数组中删除元素e
public
void
removeElement
(
E
e
) {
int
index
=
find
(
e
);
if
(
index
!= -
1
)
remove
(
index
);
}
@
Override
public
String
toString
() {
StringBuilder
res
=
new
StringBuilder
();
res
.
append
(
String
.
format
(
"Array: size = %d , capacity = %d
\n
"
,
size
,
data
.
length
));
res
.
append
(
'['
);
for
(
int
i
=
0
;
i
<
size
;
i
++) {
res
.
append
(
data
[
i
]);
if
(
i
!=
size
-
1
)
res
.
append
(
", "
);
}
res
.
append
(
']'
);
return
res
.
toString
();
}
// 将数组空间的容量变成newCapacity大小
private
void
resize
(
int
newCapacity
) {
E
[]
newData
= (
E
[])
new
Object
[
newCapacity
];
for
(
int
i
=
0
;
i
<
size
;
i
++)
newData
[
i
] =
data
[
i
];
data
=
newData
;
}
}
Back
|
FazBrowse Home
|
New Git URL