Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
2
20231104-KursPodstawowyALX
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Patryk Czarnik
20231104-KursPodstawowyALX
Commits
de62d82b
Commit
de62d82b
authored
Jan 27, 2024
by
Patryk Czarnik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Employee - wersja z rekordem
parent
5883733a
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
240 additions
and
0 deletions
+240
-0
Employee.java
src/main/java/emps/v4_rekordy/Employee.java
+19
-0
F2_WypiszBogatych.java
src/main/java/emps/v4_rekordy/F2_WypiszBogatych.java
+25
-0
F4_SredniaJedenJob.java
src/main/java/emps/v4_rekordy/F4_SredniaJedenJob.java
+28
-0
GrupowanieMap.java
src/main/java/emps/v4_rekordy/GrupowanieMap.java
+29
-0
GrupowanieMerge.java
src/main/java/emps/v4_rekordy/GrupowanieMerge.java
+27
-0
Grupowanie_f2.java
src/main/java/emps/v4_rekordy/Grupowanie_f2.java
+23
-0
ObslugaCSV.java
src/main/java/emps/v4_rekordy/ObslugaCSV.java
+35
-0
P0_TestOdczytu.java
src/main/java/emps/v4_rekordy/P0_TestOdczytu.java
+15
-0
P2_WypiszBogatych.java
src/main/java/emps/v4_rekordy/P2_WypiszBogatych.java
+20
-0
P2_WypiszBogatych_Metoda.java
src/main/java/emps/v4_rekordy/P2_WypiszBogatych_Metoda.java
+19
-0
No files found.
src/main/java/emps/v4_rekordy/Employee.java
0 → 100644
View file @
de62d82b
package
emps
.
v4_rekordy
;
import
java.time.LocalDate
;
public
record
Employee
(
int
employeeId
,
String
firstName
,
String
lastName
,
String
jobTitle
,
int
salary
,
LocalDate
hireDate
,
String
departmentName
,
String
address
,
String
postalCode
,
String
city
,
String
country
)
{
// Rekord to jest "taka klasa", dla której automatycznie tworzone są:
// - deklaracje podanych pól, które wszystkie są "private final"
// - konstruktor z wszystkimi parametrami
// - gettery do wszystkich pól, ale uwaga, nazwą metody jest po prostu "salary()", a nie "getSalary()"
// - toString, equals i hashCode w sposób standardowy dla klas typu "value object"
// Do rekordu można dodawać własne metody. Rekord może implementować interfejsy.
public
String
danePracownika
()
{
return
String
.
format
(
"%s %s (%s) zarabia %d"
,
firstName
,
lastName
,
jobTitle
,
salary
);
}
}
src/main/java/emps/v4_rekordy/F2_WypiszBogatych.java
0 → 100644
View file @
de62d82b
package
emps
.
v4_rekordy
;
import
java.util.List
;
public
class
F2_WypiszBogatych
{
public
static
void
main
(
String
[]
args
)
{
List
<
Employee
>
emps
=
ObslugaCSV
.
wczytajDane
();
System
.
out
.
println
(
"BOGACI:"
);
emps
.
stream
()
.
filter
(
emp
->
emp
.
salary
()
>=
10_000
)
.
forEach
(
emp
->
System
.
out
.
printf
(
"Pracownik nr %d, %s %s (%s) zarabia %d\n"
,
emp
.
employeeId
(),
emp
.
firstName
(),
emp
.
lastName
(),
emp
.
jobTitle
(),
emp
.
salary
()));
System
.
out
.
println
(
"\nBIEDNI:"
);
emps
.
stream
()
.
filter
(
emp
->
emp
.
salary
()
<
5000
)
.
map
(
Employee:
:
danePracownika
)
//.map(String::toUpperCase)
.
forEach
(
System
.
out
::
println
);
}
}
src/main/java/emps/v4_rekordy/F4_SredniaJedenJob.java
0 → 100644
View file @
de62d82b
package
emps
.
v4_rekordy
;
import
java.util.List
;
import
java.util.OptionalDouble
;
import
javax.swing.JOptionPane
;
public
class
F4_SredniaJedenJob
{
public
static
void
main
(
String
[]
args
)
{
List
<
Employee
>
emps
=
ObslugaCSV
.
wczytajDane
();
String
szukanyJob
=
JOptionPane
.
showInputDialog
(
"Podaj nazwę stanowiska"
,
"Programmer"
);
OptionalDouble
srednia
=
emps
.
stream
()
.
filter
(
emp
->
emp
.
jobTitle
().
equals
(
szukanyJob
))
.
mapToInt
(
Employee:
:
salary
)
.
average
();
if
(
srednia
.
isPresent
())
{
JOptionPane
.
showMessageDialog
(
null
,
"Średnia pensja: "
+
srednia
.
getAsDouble
());
}
else
{
JOptionPane
.
showMessageDialog
(
null
,
"Nikt nie pracuje na stanowisku "
+
szukanyJob
,
"Brak dancyh"
,
JOptionPane
.
WARNING_MESSAGE
);
}
}
}
src/main/java/emps/v4_rekordy/GrupowanieMap.java
0 → 100644
View file @
de62d82b
package
emps
.
v4_rekordy
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.TreeMap
;
public
class
GrupowanieMap
{
public
static
void
main
(
String
[]
args
)
{
List
<
Employee
>
emps
=
ObslugaCSV
.
wczytajDane
();
Map
<
String
,
Integer
>
sumy
=
new
TreeMap
<>();
Map
<
String
,
Integer
>
ilosci
=
new
TreeMap
<>();
for
(
Employee
emp
:
emps
)
{
int
suma
=
sumy
.
getOrDefault
(
emp
.
jobTitle
(),
0
);
sumy
.
put
(
emp
.
jobTitle
(),
suma
+
emp
.
salary
());
int
ilosc
=
ilosci
.
getOrDefault
(
emp
.
jobTitle
(),
0
);
ilosci
.
put
(
emp
.
jobTitle
(),
ilosc
+
1
);
}
for
(
String
job
:
sumy
.
keySet
())
{
int
suma
=
sumy
.
get
(
job
);
int
ilosc
=
ilosci
.
get
(
job
);
double
srednia
=
suma
/
ilosc
;
System
.
out
.
printf
(
"| %-32s | %2d | %8.2f |\n"
,
job
,
ilosc
,
srednia
);
}
}
}
src/main/java/emps/v4_rekordy/GrupowanieMerge.java
0 → 100644
View file @
de62d82b
package
emps
.
v4_rekordy
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.TreeMap
;
public
class
GrupowanieMerge
{
public
static
void
main
(
String
[]
args
)
{
List
<
Employee
>
emps
=
ObslugaCSV
.
wczytajDane
();
Map
<
String
,
Integer
>
sumy
=
new
TreeMap
<>();
Map
<
String
,
Integer
>
ilosci
=
new
TreeMap
<>();
for
(
Employee
emp
:
emps
)
{
sumy
.
merge
(
emp
.
jobTitle
(),
emp
.
salary
(),
Integer:
:
sum
);
ilosci
.
merge
(
emp
.
jobTitle
(),
1
,
Integer:
:
sum
);
}
for
(
String
job
:
sumy
.
keySet
())
{
int
suma
=
sumy
.
get
(
job
);
int
ilosc
=
ilosci
.
get
(
job
);
double
srednia
=
suma
/
ilosc
;
System
.
out
.
printf
(
"| %-32s | %2d | %8.2f |\n"
,
job
,
ilosc
,
srednia
);
}
}
}
src/main/java/emps/v4_rekordy/Grupowanie_f2.java
0 → 100644
View file @
de62d82b
package
emps
.
v4_rekordy
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
public
class
Grupowanie_f2
{
public
static
void
main
(
String
[]
args
)
{
List
<
Employee
>
emps
=
ObslugaCSV
.
wczytajDane
();
// W tej wersji do groupingBy dodajemy parametr (kolejny collector) mówiący, co zrobić z każdą grupą.
// Dla każdej grupy liczymy średnią pensję.
Map
<
String
,
Double
>
grupy
=
emps
.
stream
().
collect
(
Collectors
.
groupingBy
(
Employee:
:
jobTitle
,
Collectors
.
averagingInt
(
Employee:
:
salary
)));
grupy
.
forEach
((
job
,
srednia
)
->
{
System
.
out
.
printf
(
"%32s → %8.2f%n"
,
job
,
srednia
);
});
}
}
src/main/java/emps/v4_rekordy/ObslugaCSV.java
0 → 100644
View file @
de62d82b
package
emps
.
v4_rekordy
;
import
java.io.BufferedReader
;
import
java.io.FileReader
;
import
java.io.IOException
;
import
java.time.LocalDate
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
ObslugaCSV
{
/** Wczytuje dane z domyślnej lokalizacji pliku. */
public
static
List
<
Employee
>
wczytajDane
()
{
return
wczytajDane
(
"pliki/emps.csv"
);
}
public
static
List
<
Employee
>
wczytajDane
(
String
sciezka
)
{
List
<
Employee
>
lista
=
new
ArrayList
<>();
try
(
BufferedReader
in
=
new
BufferedReader
(
new
FileReader
(
sciezka
)))
{
String
linia
=
in
.
readLine
();
// pierwszą linię ignorujemy - tam są nazwy kolumn
while
((
linia
=
in
.
readLine
())
!=
null
)
{
String
[]
t
=
linia
.
split
(
";"
,
-
1
);
Employee
emp
=
new
Employee
(
Integer
.
parseInt
(
t
[
0
]),
t
[
1
],
t
[
2
],
t
[
3
],
Integer
.
parseInt
(
t
[
4
]),
LocalDate
.
parse
(
t
[
5
]),
t
[
6
],
t
[
7
],
t
[
8
],
t
[
9
],
t
[
10
]);
lista
.
add
(
emp
);
}
}
catch
(
IOException
e
)
{
// W przypadku błędu wypiszemy info, ale nie przerywamy programu
e
.
printStackTrace
();
}
return
lista
;
}
}
src/main/java/emps/v4_rekordy/P0_TestOdczytu.java
0 → 100644
View file @
de62d82b
package
emps
.
v4_rekordy
;
import
java.util.List
;
public
class
P0_TestOdczytu
{
public
static
void
main
(
String
[]
args
)
{
List
<
Employee
>
emps
=
ObslugaCSV
.
wczytajDane
(
"pliki/emps.csv"
);
System
.
out
.
println
(
"Odczytano "
+
emps
.
size
()
+
" rekordów:"
);
for
(
Employee
emp
:
emps
)
{
System
.
out
.
println
(
emp
);
}
}
}
src/main/java/emps/v4_rekordy/P2_WypiszBogatych.java
0 → 100644
View file @
de62d82b
package
emps
.
v4_rekordy
;
import
java.util.List
;
public
class
P2_WypiszBogatych
{
public
static
void
main
(
String
[]
args
)
{
List
<
Employee
>
emps
=
ObslugaCSV
.
wczytajDane
();
int
ile
=
0
;
for
(
Employee
emp
:
emps
)
{
if
(
emp
.
salary
()
>=
10_000
)
{
System
.
out
.
printf
(
"%s %s (%s) zarabia %d\n"
,
emp
.
firstName
(),
emp
.
lastName
(),
emp
.
jobTitle
(),
emp
.
salary
());
ile
++;
}
}
System
.
out
.
println
(
"Liczba bogatych osób: "
+
ile
);
}
}
src/main/java/emps/v4_rekordy/P2_WypiszBogatych_Metoda.java
0 → 100644
View file @
de62d82b
package
emps
.
v4_rekordy
;
import
java.util.List
;
public
class
P2_WypiszBogatych_Metoda
{
public
static
void
main
(
String
[]
args
)
{
List
<
Employee
>
emps
=
ObslugaCSV
.
wczytajDane
();
int
ile
=
0
;
for
(
Employee
emp
:
emps
)
{
if
(
emp
.
salary
()
>=
10_000
)
{
System
.
out
.
println
(
emp
.
danePracownika
());
ile
++;
}
}
System
.
out
.
println
(
"Liczba bogatych osób: "
+
ile
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment