Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
java_dzienna_15_09
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
java_dzienna_15_09
Commits
4dd19316
Commit
4dd19316
authored
Sep 16, 2022
by
Patryk Czarnik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
przykłady grupowania
parent
3000b8fc
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
103 additions
and
0 deletions
+103
-0
Grupowanie1.java
...entyJavy/src/main/java/emps/strumieniowo/Grupowanie1.java
+25
-0
Grupowanie2.java
...entyJavy/src/main/java/emps/strumieniowo/Grupowanie2.java
+21
-0
Grupowanie3.java
...entyJavy/src/main/java/emps/strumieniowo/Grupowanie3.java
+29
-0
Podzial.java
...ElementyJavy/src/main/java/emps/strumieniowo/Podzial.java
+28
-0
No files found.
PC22-ZaawansowaneElementyJavy/src/main/java/emps/strumieniowo/Grupowanie1.java
0 → 100644
View file @
4dd19316
package
emps
.
strumieniowo
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
public
class
Grupowanie1
{
public
static
void
main
(
String
[]
args
)
{
List
<
Employee
>
emps
=
ObslugaCSV
.
wczytaj
(
"emps.csv"
);
Map
<
String
,
List
<
Employee
>>
grupy
=
emps
.
stream
().
collect
(
Collectors
.
groupingBy
(
Employee:
:
getJobTitle
));
// Dla każdego stanowiska mamy listę pracowników.
// Zawartość tych kolekcji wypiszemy również w sposób "funkcyjny":
grupy
.
forEach
((
job
,
lista
)
->
{
System
.
out
.
println
(
"Pracownicy na stanowisku "
+
job
+
": "
);
lista
.
forEach
(
emp
->
{
System
.
out
.
println
(
" * "
+
emp
.
getFirstName
()
+
" "
+
emp
.
getLastName
());
});
System
.
out
.
println
();
});
}
}
PC22-ZaawansowaneElementyJavy/src/main/java/emps/strumieniowo/Grupowanie2.java
0 → 100644
View file @
4dd19316
package
emps
.
strumieniowo
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
public
class
Grupowanie2
{
public
static
void
main
(
String
[]
args
)
{
List
<
Employee
>
emps
=
ObslugaCSV
.
wczytaj
(
"emps.csv"
);
// Drugi parametr kolektora groupingBy określa "co zrobić z każdą grupą" i też ma być kolektorem.
// W tym przypadku dla każdej grupy pracowników obliczamy średnią pensję.
Map
<
String
,
Double
>
srednie
=
emps
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
Employee:
:
getJobTitle
,
Collectors
.
averagingInt
(
Employee:
:
getSalary
)));
srednie
.
forEach
((
job
,
avg
)
->
System
.
out
.
printf
(
"%32s → %8.2f\n"
,
job
,
avg
));
}
}
PC22-ZaawansowaneElementyJavy/src/main/java/emps/strumieniowo/Grupowanie3.java
0 → 100644
View file @
4dd19316
package
emps
.
strumieniowo
;
import
java.util.IntSummaryStatistics
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.TreeMap
;
import
java.util.stream.Collectors
;
public
class
Grupowanie3
{
public
static
void
main
(
String
[]
args
)
{
List
<
Employee
>
emps
=
ObslugaCSV
.
wczytaj
(
"emps.csv"
);
// Parametr TreeMap::new to jest "przepis na pusty słownik" i chodzi tu o to, aby został uzyty TreeMap zamiast HashMap.
// Dane są posortowane.
// Dla każdej grupy obliczymy tutaj "statystyki" a nie tylko średnią.
Map
<
String
,
IntSummaryStatistics
>
srednie
=
emps
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
Employee:
:
getJobTitle
,
TreeMap:
:
new
,
Collectors
.
summarizingInt
(
Employee:
:
getSalary
)));
System
.
out
.
println
(
" Stanowisko | ile| min | średnia | max | suma |"
);
srednie
.
forEach
((
job
,
stats
)
->
System
.
out
.
printf
(
" %-32s | %2d | %8d | %8.2f | %8d | %10d |\n"
,
job
,
stats
.
getCount
(),
stats
.
getMin
(),
stats
.
getAverage
(),
stats
.
getMax
(),
stats
.
getSum
()));
}
}
PC22-ZaawansowaneElementyJavy/src/main/java/emps/strumieniowo/Podzial.java
0 → 100644
View file @
4dd19316
package
emps
.
strumieniowo
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
public
class
Podzial
{
public
static
void
main
(
String
[]
args
)
{
List
<
Employee
>
emps
=
ObslugaCSV
.
wczytaj
(
"emps.csv"
);
// Szczególnym rodzajem grupowania jest podział danych na dwie grupy zwn warunek logiczny.
Map
<
Boolean
,
List
<
Employee
>>
grupy
=
emps
.
stream
().
collect
(
Collectors
.
partitioningBy
(
emp
->
emp
.
getSalary
()
>=
10_000
));
System
.
out
.
println
(
"Bogaci:"
);
grupy
.
get
(
true
).
forEach
(
emp
->
{
System
.
out
.
println
(
" * "
+
emp
.
getFirstName
()
+
" "
+
emp
.
getLastName
());
});
System
.
out
.
println
();
System
.
out
.
println
(
"Biedni:"
);
grupy
.
get
(
false
).
forEach
(
emp
->
{
System
.
out
.
println
(
" * "
+
emp
.
getFirstName
()
+
" "
+
emp
.
getLastName
());
});
}
}
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