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
69cbf8ac
Commit
69cbf8ac
authored
Jan 07, 2024
by
Patryk Czarnik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
średnia i grupowanie - wersje funkcyjne
parent
3a0d6724
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
128 additions
and
1 deletions
+128
-1
F2_WypiszBogatych.java
src/main/java/emps/v3_funkcyjnie/F2_WypiszBogatych.java
+1
-1
F3_SredniaWszystkich.java
src/main/java/emps/v3_funkcyjnie/F3_SredniaWszystkich.java
+22
-0
F4_SredniaJedenJob.java
src/main/java/emps/v3_funkcyjnie/F4_SredniaJedenJob.java
+28
-0
Grupowanie_f1.java
src/main/java/emps/v3_funkcyjnie/Grupowanie_f1.java
+25
-0
Grupowanie_f2.java
src/main/java/emps/v3_funkcyjnie/Grupowanie_f2.java
+23
-0
Grupowanie_f3.java
src/main/java/emps/v3_funkcyjnie/Grupowanie_f3.java
+29
-0
No files found.
src/main/java/emps/v3_funkcyjnie/F2_WypiszBogatych.java
View file @
69cbf8ac
...
@@ -21,7 +21,7 @@ public class F2_WypiszBogatych {
...
@@ -21,7 +21,7 @@ public class F2_WypiszBogatych {
// Ogólnie taka konstrukcja w kodzie nazywa się "pipeline":
// Ogólnie taka konstrukcja w kodzie nazywa się "pipeline":
// - źródło_danych
// - źródło_danych
// - operacje pośrednie (intermediate operation, może być wiele kroków), np:
filter, map
, limit, sorted, distinct, ...
// - operacje pośrednie (intermediate operation, może być wiele kroków), np:
map (różne wersje), filter
, limit, sorted, distinct, ...
// - operacja końcowa (terminal operation), np: forEach, forEachOrdered, reduce, collect, findFirst, ...
// - operacja końcowa (terminal operation), np: forEach, forEachOrdered, reduce, collect, findFirst, ...
System
.
out
.
println
(
"\nBIEDNI:"
);
System
.
out
.
println
(
"\nBIEDNI:"
);
...
...
src/main/java/emps/v3_funkcyjnie/F3_SredniaWszystkich.java
0 → 100644
View file @
69cbf8ac
package
emps
.
v3_funkcyjnie
;
import
java.util.List
;
import
java.util.stream.Collectors
;
public
class
F3_SredniaWszystkich
{
public
static
void
main
(
String
[]
args
)
{
List
<
Employee
>
emps
=
ObslugaCSV
.
wczytajDane
();
double
srednia
=
emps
.
stream
()
.
mapToInt
(
Employee:
:
getSalary
)
.
average
()
.
orElse
(
0
);
System
.
out
.
println
(
"Średnia pensja wszystkich: "
+
srednia
);
double
srednia2
=
emps
.
stream
().
collect
(
Collectors
.
averagingInt
(
Employee:
:
getSalary
));
System
.
out
.
println
(
"Średnia pensja wszystkich: "
+
srednia2
);
}
}
src/main/java/emps/v3_funkcyjnie/F4_SredniaJedenJob.java
0 → 100644
View file @
69cbf8ac
package
emps
.
v3_funkcyjnie
;
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
.
getJobTitle
().
equals
(
szukanyJob
))
.
mapToInt
(
Employee:
:
getSalary
)
.
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/v3_funkcyjnie/Grupowanie_f1.java
0 → 100644
View file @
69cbf8ac
package
emps
.
v3_funkcyjnie
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
public
class
Grupowanie_f1
{
public
static
void
main
(
String
[]
args
)
{
List
<
Employee
>
emps
=
ObslugaCSV
.
wczytajDane
();
// Dla podanego jobTitle, wartością jest lista tych pracowników, którzy mają takie jobTitle.
Map
<
String
,
List
<
Employee
>>
grupy
=
emps
.
stream
().
collect
(
Collectors
.
groupingBy
(
Employee:
:
getJobTitle
));
// Sposób wypisywania danych ze słownika dostępny od Java 8.
grupy
.
forEach
((
job
,
lista
)
->
{
System
.
out
.
println
(
"Stanowisko "
+
job
+
":"
);
lista
.
forEach
(
emp
->
{
System
.
out
.
println
(
" * "
+
emp
.
getFirstName
()
+
" "
+
emp
.
getLastName
()
+
" "
+
emp
.
getSalary
());
});
System
.
out
.
println
();
});
}
}
src/main/java/emps/v3_funkcyjnie/Grupowanie_f2.java
0 → 100644
View file @
69cbf8ac
package
emps
.
v3_funkcyjnie
;
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:
:
getJobTitle
,
Collectors
.
averagingInt
(
Employee:
:
getSalary
)));
grupy
.
forEach
((
job
,
srednia
)
->
{
System
.
out
.
printf
(
"%32s → %8.2f%n"
,
job
,
srednia
);
});
}
}
src/main/java/emps/v3_funkcyjnie/Grupowanie_f3.java
0 → 100644
View file @
69cbf8ac
package
emps
.
v3_funkcyjnie
;
import
java.util.IntSummaryStatistics
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.TreeMap
;
import
java.util.stream.Collectors
;
public
class
Grupowanie_f3
{
public
static
void
main
(
String
[]
args
)
{
List
<
Employee
>
emps
=
ObslugaCSV
.
wczytajDane
();
// W tej wersji wyliczamy nie tylko średnią, ale ogólne "statystyki" (podobnie, jak w Grupowanie_v7).
// Niezależnie od tego do kolektora groupingBy przekazuję też parametr TreeMap::new
// co powoduje użycie TreeMap zamiast HashMap
Map
<
String
,
IntSummaryStatistics
>
grupy
=
emps
.
stream
().
collect
(
Collectors
.
groupingBy
(
Employee:
:
getJobTitle
,
TreeMap:
:
new
,
Collectors
.
summarizingInt
(
Employee:
:
getSalary
)));
grupy
.
forEach
((
job
,
stats
)
->
{
// System.out.printf("%32s → %s%n", job, stats);
System
.
out
.
printf
(
"| %-32s | %2d | %5d | %8.2f | %5d |%n"
,
job
,
stats
.
getCount
(),
stats
.
getMin
(),
stats
.
getAverage
(),
stats
.
getMax
());
});
}
}
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