Commit 3c74648b by Patryk Czarnik

zadania rozwiązane "proceduralnie"

parent ca2b5730
package emps;
import java.util.List;
public class P2_WypiszBogatych {
public static void main(String[] args) {
List<Employee> emps = ObslugaCSV.wczytaj();
int ile = 0;
for(Employee emp : emps) {
if(emp.getSalary() >= 10_000) {
System.out.printf("Pracownik %s %s (%s) zarabia %d i pracuje w %s.\n",
emp.getFirstName(), emp.getLastName(), emp.getJobTitle(), emp.getSalary(), emp.getCity());
ile++;
}
}
System.out.println(ile);
}
}
package emps;
import java.util.List;
public class P3_SredniaWszystkich {
public static void main(String[] args) {
List<Employee> emps = ObslugaCSV.wczytaj();
double suma = 0;
for(Employee emp : emps) {
suma += emp.getSalary();
}
double srednia = suma / emps.size();
System.out.println("Średnia wszystkich: " + srednia);
}
}
package emps;
import java.util.List;
public class P4_SredniaWybranych1 {
public static void main(String[] args) {
List<Employee> emps = ObslugaCSV.wczytaj();
double suma = 0;
int ile = 0;
for(Employee emp : emps) {
if("Programmer".equals(emp.getJobTitle())) {
suma += emp.getSalary();
ile++;
}
}
double srednia = suma / ile;
System.out.println("Średnia progrmaistów: " + srednia);
}
}
package emps;
import java.util.List;
import java.util.Objects;
import javax.swing.JOptionPane;
public class P4_SredniaWybranych2 {
public static void main(String[] args) {
String szukanyJob = JOptionPane.showInputDialog("Podaj nazwę stanowiska");
List<Employee> emps = ObslugaCSV.wczytaj();
double suma = 0;
int ile = 0;
for(Employee emp : emps) {
if(Objects.equals(emp.getJobTitle(), szukanyJob)) {
suma += emp.getSalary();
ile++;
}
}
if(ile > 0) {
double srednia = suma / ile;
JOptionPane.showMessageDialog(null, "Średnia na stanowisku " + szukanyJob + " wynosi " + srednia);
} else {
JOptionPane.showMessageDialog(null, "Nikt nie pracuje na stanowisku " + szukanyJob, "Nie znaleziono", JOptionPane.WARNING_MESSAGE);
}
}
}
package emps;
import java.util.List;
public class P5_MinMax_v1 {
public static void main(String[] args) {
List<Employee> emps = ObslugaCSV.wczytaj();
int maxSalary = 0;
int minSalary = Integer.MAX_VALUE;
String max = "";
String min = "";
for(Employee emp : emps) {
if(emp.getSalary() > maxSalary) {
maxSalary = emp.getSalary();
max = emp.getFirstName() + " " + emp.getLastName();
}
if(emp.getSalary() < minSalary) {
minSalary = emp.getSalary();
min = emp.getFirstName() + " " + emp.getLastName();
}
}
System.out.println("max: " + maxSalary + " = " + max);
System.out.println("min: " + minSalary + " = " + min);
}
}
package emps;
import java.util.List;
public class P5_MinMax_v2 {
public static void main(String[] args) {
List<Employee> emps = ObslugaCSV.wczytaj();
Employee max = null;
Employee min = null;
for(Employee emp : emps) {
if(max == null || emp.getSalary() > max.getSalary()) {
max = emp;
}
if(min == null || emp.getSalary() < min.getSalary()) {
min = emp;
}
}
System.out.println("max: " + max);
System.out.println("min: " + min);
}
}
package emps;
import java.util.List;
public class P5_MinMax_v3 {
public static void main(String[] args) {
List<Employee> emps = ObslugaCSV.wczytaj();
if(emps.isEmpty()) {
System.out.println("Brak danych");
System.exit(1); // zakończenie procesu z podanym kodem
}
Employee max = emps.get(0);
Employee min = emps.get(0);
for(Employee emp : emps) {
if(emp.getSalary() > max.getSalary()) {
max = emp;
}
if(emp.getSalary() < min.getSalary()) {
min = emp;
}
}
System.out.println("max: " + max);
System.out.println("min: " + min);
}
}
package emps;
import java.util.List;
public class P6_Sortowanie_v0 {
public static void main(String[] args) {
List<Employee> emps = ObslugaCSV.wczytaj();
emps.sort(null);
for(Employee emp : emps) {
System.out.printf("|%-12s|%-15s|%-31s|%6d |%-20s|\n",
emp.getFirstName(), emp.getLastName(), emp.getJobTitle(), emp.getSalary(), emp.getCity());
}
}
}
package emps;
import java.util.Comparator;
import java.util.List;
public class P6_Sortowanie_v1 {
public static void main(String[] args) {
List<Employee> emps = ObslugaCSV.wczytaj();
// Do metod sortujących można przekazać obiekt zgodny z interfejsem Comparator.
// Jest wiele sposobó, aby taki komparator uzyskać.
// W tej wersji tworzę dodatkową klasę KomparatorPracownikow.
// Przy okazji: niech to będzie klasa zagnieżdżona.
KomparatorPracownikow porownywarka = new KomparatorPracownikow();
emps.sort(porownywarka);
for(Employee emp : emps) {
System.out.printf("|%-12s|%-15s|%-31s|%6d |%-20s|\n",
emp.getFirstName(), emp.getLastName(), emp.getJobTitle(), emp.getSalary(), emp.getCity());
}
System.out.println();
System.out.printf("Do sortowania %d obiektów potrzebnych było %d porównań.\n",
emps.size(), porownywarka.liczbaPorownan);
}
private static class KomparatorPracownikow implements Comparator<Employee> {
int liczbaPorownan = 0;
// Metody porównujące (Comparator.comparte oraz Comparable.compareTo)
// zwracają wynik typu int, który ma takie znaczenie:
// wynik < 0 → lewy argument jest mniejszy od prawego
// wynik > 0 → lewy argument jest większy od prawego
// wynik = 0 → oba argumenty są równe
// TO MY JAKO AUTORZY KOMPARATORA OKREŚLAMY CO JEST MNIEJSZE, A CO WIĘKSZE
public int compare(Employee emp1, Employee emp2) {
liczbaPorownan++;
// System.out.println("porównuję " + emp1.getLastName() + " vs " + emp2.getLastName());
return emp1.getSalary() - emp2.getSalary();
// to jest sortowanie rosnące wg pensji
}
}
}
package emps;
import java.util.Comparator;
import java.util.List;
public class P6_Sortowanie_v2 {
// W tej wersji oobiekt Comparator tworzymy za pomocą konstrukcji "klasa anonimowa".
public static void main(String[] args) {
List<Employee> emps = ObslugaCSV.wczytaj();
emps.sort(new Comparator<>() {
public int compare(Employee emp1, Employee emp2) {
return emp2.getSalary() - emp1.getSalary();
}
});
for(Employee emp : emps) {
System.out.printf("|%-12s|%-15s|%-31s|%6d |%-20s|\n",
emp.getFirstName(), emp.getLastName(), emp.getJobTitle(), emp.getSalary(), emp.getCity());
}
}
}
package emps;
import java.util.List;
public class P6_Sortowanie_v3 {
// W tej wersji komparator tworzę za pomocą wyrażenia lambda. Dostępne od Java 8.
public static void main(String[] args) {
List<Employee> emps = ObslugaCSV.wczytaj();
emps.sort((emp1, emp2) -> emp2.getSalary() - emp1.getSalary());
for(Employee emp : emps) {
System.out.printf("|%-12s|%-15s|%-31s|%6d |%-20s|\n",
emp.getFirstName(), emp.getLastName(), emp.getJobTitle(), emp.getSalary(), emp.getCity());
}
}
}
package emps;
import java.util.Comparator;
import java.util.List;
public class P6_Sortowanie_v4 {
// W Java 8 pojawiły się też kreatory komparatorów, które pozwalają porównywać obiekty zwn wybrane kryteria.
// Do comparing / comparingInt itd
// przekazuje się funkcję, która na podstawie obiektu zwraca wybraną wartość, wg której obiekty są porównywane.
// Najczęściej tą funkcją jest getter odczytujący wybrane pole.
public static void main(String[] args) {
List<Employee> emps = ObslugaCSV.wczytaj();
emps.sort(Comparator.comparingInt(Employee::getSalary).reversed());
for(Employee emp : emps) {
System.out.printf("|%-12s|%-15s|%-31s|%6d |%-20s|\n",
emp.getFirstName(), emp.getLastName(), emp.getJobTitle(), emp.getSalary(), emp.getCity());
}
}
}
package emps;
import java.util.Comparator;
import java.util.List;
public class P6_Sortowanie_v5 {
public static void main(String[] args) {
List<Employee> emps = ObslugaCSV.wczytaj();
emps.sort(Comparator.comparing(Employee::getLastName).thenComparing(Employee::getFirstName));
for(Employee emp : emps) {
System.out.printf("|%-12s|%-15s|%-31s|%6d |%-20s|\n",
emp.getFirstName(), emp.getLastName(), emp.getJobTitle(), emp.getSalary(), emp.getCity());
}
}
}
package emps;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class P7_UnikalneMiasta {
public static void main(String[] args) {
List<Employee> emps = ObslugaCSV.wczytaj();
Set<String> miasta = new TreeSet<>();
for(Employee emp : emps) {
if(!emp.getCity().isEmpty()) {
miasta.add(emp.getCity());
}
}
System.out.println(miasta);
System.out.println("Liczba miast: " + miasta.size());
System.out.println();
for(String miasto : miasta) {
System.out.println(" * " + miasto);
}
}
}
package emps;
import java.time.LocalDate;
public class Porownywanie {
public static void main(String[] args) {
Employee emp1 = new Employee(1, "Jan", "Kowalski", "kierowca", 4400, LocalDate.of(1990, 4, 5), "transport", "Jasna 14", "01-234", "Warszawa", "Polska");
Employee emp2 = new Employee(1, "Jan", "Kowalski", "kierowca", 4400, LocalDate.of(1990, 4, 5), "transport", "Jasna 14", "01-234", "Warszawa", "Polska");
Employee emp3 = new Employee(3, "Janina", "Kowalska", "kierowca", 4400, LocalDate.of(1990, 4, 5), "transport", "Jasna 14", "01-234", "Warszawa", "Polska");
Employee emp4 = emp1;
System.out.println(emp1);
System.out.println(emp2);
System.out.println(emp3);
System.out.println();
System.out.println("==");
System.out.println(emp1 == emp1);
System.out.println(emp1 == emp2);
System.out.println(emp1 == emp3);
System.out.println(emp1 == emp4);
System.out.println();
System.out.println("eq");
System.out.println(emp1.equals(emp1));
System.out.println(emp1.equals(emp2));
System.out.println(emp1.equals(emp3));
System.out.println(emp1.equals(emp4));
// Domyślna implementacja equals, tak samo jak operacja ==, porównuje adresy obiektów.
// Sprawdza, czy to jest TEN SAM obiekt (a nie TAKI SAM).
// Aby equals sprawdzało czy obiekty zawierają te same dane, powinniśmy przedefiniować (Override)metodę equals w definicji klasy.
}
}
...@@ -11,4 +11,6 @@ P4_SredniaJob - oblicz średnią pensję na wybranym stanowisku ...@@ -11,4 +11,6 @@ P4_SredniaJob - oblicz średnią pensję na wybranym stanowisku
P5_MinMax - wypisz kto zarabia najwięcej, a kto najmniej (nie tylko liczby, ale też imię i nazwisko) P5_MinMax - wypisz kto zarabia najwięcej, a kto najmniej (nie tylko liczby, ale też imię i nazwisko)
P6_Sortowanie (opcjonalnie) - posortuj pracowników wg pensji malejąco
P7_UnikalneMiasta - wypisz miasta bez powtórzeń P7_UnikalneMiasta - wypisz miasta bez powtórzeń
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment