FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
Java/DataStructures/Bags/Bag.java at master · java66liu/Java · GitHub
java66liu
/
Java
Public
forked from
TheAlgorithms/Java
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
Java
/
DataStructures
/
Bags
/
Bag.java
Copy path
More file actions
More file actions
Latest commit
History
History
History
126 lines (106 loc) · 3.08 KB
Breadcrumbs
Java
/
DataStructures
/
Bags
/
Bag.java
Copy path
File metadata and controls
126 lines (106 loc) · 3.08 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
package
DataStructures
.
Bags
;
import
java
.
util
.
Iterator
;
import
java
.
util
.
NoSuchElementException
;
/**
* Collection which does not allow removing elements (only collect and iterate)
*
* @param <Element> - the generic type of an element in this bag
*/
public
class
Bag
<
Element
>
implements
Iterable
<
Element
> {
private
Node
<
Element
>
firstElement
;
// first element of the bag
private
int
size
;
// size of bag
private
static
class
Node
<
Element
> {
private
Element
content
;
private
Node
<
Element
>
nextElement
;
}
/**
* Create an empty bag
*/
public
Bag
() {
firstElement
=
null
;
size
=
0
;
}
/**
* @return true if this bag is empty, false otherwise
*/
public
boolean
isEmpty
() {
return
firstElement
==
null
;
}
/**
* @return the number of elements
*/
public
int
size
() {
return
size
;
}
/**
* @param element - the element to add
*/
public
void
add
(
Element
element
) {
Node
<
Element
>
oldfirst
=
firstElement
;
firstElement
=
new
Node
<>();
firstElement
.
content
=
element
;
firstElement
.
nextElement
=
oldfirst
;
size
++;
}
/**
* Checks if the bag contains a specific element
*
* @param element which you want to look for
* @return true if bag contains element, otherwise false
*/
public
boolean
contains
(
Element
element
) {
Iterator
<
Element
>
iterator
=
this
.
iterator
();
while
(
iterator
.
hasNext
()) {
if
(
iterator
.
next
().
equals
(
element
)) {
return
true
;
}
}
return
false
;
}
/**
* @return an iterator that iterates over the elements in this bag in arbitrary order
*/
public
Iterator
<
Element
>
iterator
() {
return
new
ListIterator
<>(
firstElement
);
}
@
SuppressWarnings
(
"hiding"
)
private
class
ListIterator
<
Element
>
implements
Iterator
<
Element
> {
private
Node
<
Element
>
currentElement
;
public
ListIterator
(
Node
<
Element
>
firstElement
) {
currentElement
=
firstElement
;
}
public
boolean
hasNext
() {
return
currentElement
!=
null
;
}
/**
* remove is not allowed in a bag
*/
@
Override
public
void
remove
() {
throw
new
UnsupportedOperationException
();
}
public
Element
next
() {
if
(!
hasNext
())
throw
new
NoSuchElementException
();
Element
element
=
currentElement
.
content
;
currentElement
=
currentElement
.
nextElement
;
return
element
;
}
}
/**
* main-method for testing
*/
public
static
void
main
(
String
[]
args
) {
Bag
<
String
>
bag
=
new
Bag
<>();
bag
.
add
(
"1"
);
bag
.
add
(
"1"
);
bag
.
add
(
"2"
);
System
.
out
.
println
(
"size of bag = "
+
bag
.
size
());
for
(
String
s
:
bag
) {
System
.
out
.
println
(
s
);
}
System
.
out
.
println
(
bag
.
contains
(
null
));
System
.
out
.
println
(
bag
.
contains
(
"1"
));
System
.
out
.
println
(
bag
.
contains
(
"3"
));
}
}
Back
|
FazBrowse Home
|
New Git URL