-
Notifications
You must be signed in to change notification settings - Fork 0
/
EmployeeList.java
130 lines (114 loc) · 4.05 KB
/
EmployeeList.java
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
/*
This class contains the list of all the employees entered.
It contains methods to remove, add, and modify employees. It
also contains methods for sorting the list of employees by
salary and alphabetically using insertion sort
*/
import java.util.*;
public class EmployeeList {
// lists for the unsorted and sorted lists of employees
private DoubleLinkedList<Employee> originalEmployeeList;
private DoubleLinkedList<Employee> sortedEmployeeList;
// creating new lists
public EmployeeList() {
originalEmployeeList = new DoubleLinkedList<Employee>();
sortedEmployeeList = new DoubleLinkedList<Employee>();
}
// adding a new employee to the lists
public void addEmployee(Employee e) {
originalEmployeeList.add(e);
sortedEmployeeList.add(e);
}
// getting the original list of employees
public DoubleLinkedList<Employee> getOriginal() {
return originalEmployeeList;
}
// clearing both lists of employees
public void reset() {
originalEmployeeList = new DoubleLinkedList<Employee>();
sortedEmployeeList = new DoubleLinkedList<Employee>();
}
// getting the number of employees
public int getSize() {
return originalEmployeeList.size();
}
// removing an employee from the list
public void remove(Employee i) {
DoubleLinkedList<Employee>.DoublyLinkedListIterator iterator = originalEmployeeList.iterator();
while (iterator.hasNext()) {
// removes the matching employee
Employee temp = iterator.next();
if (temp.getName().equals(i.getName()) && temp.getSalary() == i.getSalary()
&& temp.getDepartment().equals(i.getDepartment())) {
iterator.remove();
break;
}
}
}
// modifying the information of an old employee
public void setEmployee(Employee oldE, Employee newE) {
// creating a new iterator
DoubleLinkedList<Employee>.DoublyLinkedListIterator iterator = originalEmployeeList.iterator();
while (iterator.hasNext()) { // looping through list
Employee temp = iterator.next();
// if the employee is a match
if (temp.getName().equals(oldE.getName()) && temp.getDepartment().equals(oldE.getDepartment())
&& temp.getSalary() == oldE.getSalary()) {
// replace information with new information
temp.setName(newE.getName());
temp.setDepartment(newE.getDepartment());
temp.setSalary(newE.getSalary());
break;
}
}
}
// getting an employee from the list
public Employee getEmp(int i) {
DoubleLinkedList<Employee>.DoublyLinkedListIterator iterator = originalEmployeeList.iterator();
return iterator.get(i);
}
// sorting the list alphabetically using insertion sort
public DoubleLinkedList<Employee> insertionSortAlphabetical() {
DoubleLinkedList<Employee>.DoublyLinkedListIterator iterator = sortedEmployeeList.iterator();
// sort the list using insertion sort
for (int i = 1; i < originalEmployeeList.size(); i++) {
Employee key = iterator.get(i);
int j = i - 1;
// loop backwards until it finds its place
while (j >= 0 && iterator.get(j).getName().compareTo(key.getName()) > 0) {
// shifts everything up
iterator.get(j + 1);
iterator.next();
iterator.set(iterator.get(j));
j--;
}
// sets it in correct position
iterator.get(j + 1);
iterator.next();
iterator.set(key);
}
return sortedEmployeeList;
}
// sorting the list by salary using insertion sort
public DoubleLinkedList<Employee> insertionSortSalary() {
DoubleLinkedList<Employee>.DoublyLinkedListIterator iterator = sortedEmployeeList.iterator();
// sort the list using insertion sort
for (int i = 1; i < originalEmployeeList.size(); i++) {
Employee key = iterator.get(i);
int j = i - 1;
// loop backwards until it finds its place
while (j >= 0 && iterator.get(j).getSalary() > key.getSalary()) {
// shifts everything up
iterator.get(i + 1);
iterator.next();
iterator.set(iterator.get(j));
j--;
}
// sets it in correct position
iterator.get(j + 1);
iterator.next();
iterator.set(key);
}
return sortedEmployeeList;
}
}