SHARE
TWEET

Untitled

a guest Apr 19th, 2019 73 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //////////////////////////////////////////////////////////////////////////////////
  2. public static Osoba fromString(String string) {
  3.         String[] podaci = string.split("\\|");
  4.         if (podaci.length % 8 != 0) {
  5.             throw new IllegalArgumentException();
  6.         }
  7.         Osoba osoba = fromString(podaci[0], podaci[1], podaci[2], podaci[3], podaci[4], podaci[5], podaci[6]);
  8.         try {
  9.             int brDece = Integer.parseInt(podaci[7]);
  10.             Osoba[] deca = new Osoba[brDece];
  11.             for (int i = 0; i < brDece; i++) {
  12.                 deca[i] = fromString(podaci[8 * i + 0], podaci[8 * i + 1], podaci[8 * i + 2], podaci[8 * i + 3], podaci[8 * i + 4], podaci[8 * i + 5], podaci[8 * i + 6]);
  13.             }
  14.             return new Osoba(osoba.ime, osoba.prezime, osoba.pol, osoba.datumRodjenja, osoba.mestoRodjenja, osoba.mestoStanovanja, osoba.primanja, deca);
  15.         } catch (NumberFormatException e) {
  16.             throw new IllegalArgumentException(e);
  17.         }
  18.     }
  19.  
  20.     private static Osoba fromString(String... podaci) {
  21.         try {
  22.             return new Osoba(podaci[0], podaci[1], Pol.valueOf(podaci[2]), LocalDate.parse(podaci[3]), podaci[4], podaci[5], Integer.parseInt(podaci[6]));
  23.         } catch (NullPointerException | DateTimeParseException | NumberFormatException | IndexOutOfBoundsException e) {
  24.             throw new IllegalArgumentException(e);
  25.         }
  26.     }
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33. public static Patuljak fromString(String string) {
  34.         String[] podaci = string.split(";");
  35.         return new Patuljak(podaci[0], Integer.parseInt(podaci[1]), Integer.parseInt(podaci[2]), Double.parseDouble(podaci[3]));
  36.     }
  37.  
  38.  
  39.  
  40. /////////////////////////////////////////////////////////////////////////////////////////////////
  41.  
  42.  
  43. private static void naslov(String naslov) {
  44.         System.out.println();
  45.         System.out.println(naslov);
  46.         System.out.println(naslov.replaceAll(".", "="));
  47.     }
  48.  
  49.     private static void svi() {
  50.         Osobe.osobeStream(5000)
  51.             .forEach(System.out::println);
  52.     }
  53.  
  54.     private static void punoDece() {
  55.         Osobe.osobeStream(5000)
  56.             .filter(o -> o.getDeca().size() > 2)
  57.             .map(o -> o.getIme() + " " + o.getPrezime())
  58.             .forEach(System.out::println);
  59.     }
  60.  
  61.     private static void istoMesto() {
  62.         Osobe.osobeStream(5000)
  63.             .filter(o -> o.getMestoStanovanja().equals(o.getMestoRodjenja()))
  64.             .sorted(Comparator.comparing(Osoba::getMestoStanovanja))
  65.             .map(o -> o.getIme() + " " + o.getPrezime() + " (" + o.getMestoStanovanja() + ")")
  66.             .forEach(System.out::println);
  67.     }
  68.  
  69.     private static void bogateBezDece() {
  70.         Osobe.osobeStream(5000)
  71.             .filter(o -> o.getPol() == Pol.ZENSKI)
  72.             .filter(o -> o.getPrimanja() > 75_000)
  73.             .filter(o -> o.getDeca().isEmpty())
  74.             .sorted(Comparator.comparing(Osoba::getPrimanja).reversed())
  75.             .map(o -> String.format("%s %s (%d)", o.getIme(), o.getPrezime(), o.getPrimanja()))
  76.             .forEach(System.out::println);
  77.     }
  78.  
  79.     private static void rodjendani() {
  80.         LocalDate sad = LocalDate.now();
  81.         DateTimeFormatter format = DateTimeFormatter.ofPattern("dd.MM.");
  82.         Comparator<Osoba> poDanu = Comparator.comparing(o -> o.getDatumRodjenja().getDayOfMonth());
  83.         Comparator<Osoba> poGodini = Comparator.comparing(o -> o.getDatumRodjenja().getYear());
  84.         Comparator<Osoba> poPrezimenu = Comparator.comparing(Osoba::getPrezime);
  85.         Comparator<Osoba> poImenu = Comparator.comparing(Osoba::getIme);
  86.         Comparator<Osoba> poredak = poDanu
  87.             .thenComparing(poGodini.reversed())
  88.             .thenComparing(poPrezimenu)
  89.             .thenComparing(poImenu);
  90.         Osobe.osobeStream(5000)
  91.             .filter(o -> o.getDatumRodjenja().getMonth() == sad.getMonth())
  92.             .sorted(poredak) // Ovo se nije trazilo u zadatku
  93.             .map(o -> String.format("%s %s %s (%d)",
  94.                     format.format(o.getDatumRodjenja()),
  95.                     o.getIme(),
  96.                     o.getPrezime(),
  97.                     sad.getYear() - o.getDatumRodjenja().getYear()))
  98.             .forEach(System.out::println);
  99.     }
  100.  
  101.     private static void odrasli(String prezime) {
  102.         long br = Osobe.osobeStream(5000)
  103.             .filter(o -> o.getPrezime().equals(prezime))
  104.             .count();
  105.         System.out.println(br);
  106.     }
  107.  
  108.     private static void ukupnoDece() {
  109.         long br = Osobe.osobeStream(5000)
  110.             .flatMap(o -> o.getDeca().stream())
  111.             .count();
  112.         System.out.println(br);
  113.     }
  114.  
  115.     private static void zaPaketice() {
  116.         LocalDate sad = LocalDate.now();
  117.         Osobe.osobeStream(5000)
  118.             .flatMap(o -> o.getDeca().stream())
  119.             .filter(o -> o.getDatumRodjenja().getYear() >= 2000)
  120.             .filter(o -> o.getDatumRodjenja().getYear() <= 2010)
  121.             .map(o -> String.format("%s %s (%d)",
  122.                     o.getIme(),
  123.                     o.getPrezime(),
  124.                     o.getDatumRodjenja().until(sad).getYears()))
  125.             .forEach(System.out::println);
  126.     }
  127.  
  128.     private static void imenaPenzionera() {
  129.         LocalDate sad = LocalDate.now();
  130.         Osobe.osobeStream(5000)
  131.             .filter(o -> o.getDatumRodjenja().until(sad).getYears() >= 65)
  132.             .map(Osoba::getIme)
  133.             .distinct()
  134.             .sorted()
  135.             .forEach(System.out::println);
  136.     }
  137.  
  138.     private static void procenat() {
  139.         long brOdraslih = Osobe.osobeStream(5000)
  140.             .count();
  141.         long brOdraslihM = Osobe.osobeStream(5000)
  142.             .filter(o -> o.getPol() == Pol.MUSKI)
  143.             .count();
  144.         long brDece = Osobe.osobeStream(5000)
  145.             .flatMap(o -> o.getDeca().stream())
  146.             .count();
  147.         long brDeceM = Osobe.osobeStream(5000)
  148.             .flatMap(o -> o.getDeca().stream())
  149.             .filter(o -> o.getPol() == Pol.MUSKI)
  150.             .count();
  151.         double procenat = 100.0 * (brOdraslihM + brDeceM) / (brOdraslih + brDece);
  152.         System.out.printf("%8.5f%%%n", procenat);
  153.     }
  154.  
  155.     private static void procenat2() {
  156.         Osobe.osobeStream(5000)
  157.             .flatMap(o -> Stream.concat(
  158.                     Stream.of(o),
  159.                     o.getDeca().stream()))
  160.             .mapToDouble(o -> o.getPol() == Pol.MUSKI ? 100.0 : 0.0)
  161.             .average()
  162.             .ifPresent(d -> System.out.printf("%8.5f%%%n", d));
  163.     }
  164.  
  165.     private static void trecaPoRedu() {
  166.         Osobe.osobeStream(5000)
  167.             .sorted(Comparator.comparing((Osoba o) -> o.getBrDece(Pol.MUSKI)).reversed())
  168.             .skip(2)
  169.             .limit(1)
  170.             .forEach(System.out::println);
  171.     }
  172.  
  173.     private static void najbogatiji(String grad) {
  174.         Osobe.osobeStream(5000)
  175.             .filter(o -> o.getMestoStanovanja().equals(grad))
  176.             .sorted(Comparator.comparing(Osoba::getPrimanja).reversed())
  177.             .limit(1)
  178.             .map(o -> String.format("%s %s (%s)",
  179.                     o.getIme(),
  180.                     o.getPrimanja(),
  181.                     o.getMestoRodjenja()))
  182.             .forEach(System.out::println);
  183.     }
  184.  
  185.     private static void josBogatiji(String grad) {
  186.         int granica = Osobe.osobeStream(5000)
  187.             .filter(o -> o.getMestoStanovanja().equals(grad))
  188.             .sorted(Comparator.comparing(Osoba::getPrimanja).reversed())
  189.             .mapToInt(Osoba::getPrimanja)
  190.             .limit(1)
  191.             .sum();
  192.         Osobe.osobeStream(5000)
  193.             .filter(o -> !o.getMestoStanovanja().equals(grad))
  194.             .filter(o -> o.getPrimanja() > granica)
  195.             .sorted(Comparator.comparing(Osoba::getPrimanja))
  196.             .map(o -> String.format("%s (%s) %s",
  197.                     o.getIme(),
  198.                     o.getPrimanja(),
  199.                     o.getMestoStanovanja()))
  200.             .forEach(System.out::println);
  201.     }
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215. private final List<Patuljak> patuljci = new ArrayList<>();
  216.    
  217.     public void dodaj(Patuljak p) {
  218.         patuljci.add(p);
  219.     }
  220.  
  221.     public int brPatuljaka() {
  222.         return (int) patuljci.stream()
  223.                 .count();
  224.     }
  225.    
  226.     public double prosecnoIskopaliZlata() {
  227.         return patuljci.stream()
  228.                 .mapToDouble(Patuljak::getIskopaoZlata)
  229.                 .average()
  230.                 .orElse(Double.NaN);
  231.     }
  232.  
  233.     public double ukupnoIskopaliZlataOniNaSlovo(char slovo) {
  234.         return patuljci.stream()
  235.                 .filter(p -> p.getIme().startsWith(String.valueOf(slovo)))
  236.                 .mapToDouble(Patuljak::getIskopaoZlata)
  237.                 .sum();
  238.     }
  239.  
  240.     public Patuljak najbogatiji() {
  241.         return patuljci.stream()
  242.                 .max(Comparator.comparing(Patuljak::getIskopaoZlata))
  243.                 .orElse(null);
  244.     }
  245.  
  246.     public Patuljak drugiNajbogatiji() {
  247.         return patuljci.stream()
  248.                 .sorted(Comparator.comparing(Patuljak::getIskopaoZlata).reversed())
  249.                 .skip(1)
  250.                 .findFirst()
  251.                 .orElse(null);
  252.     }
  253.  
  254.     public int ukupnoUbiliGoblina(Predicate<Patuljak> p) {
  255.         return patuljci.stream()
  256.                 .filter(p)
  257.                 .mapToInt(Patuljak::getUbioGoblina)
  258.                 .sum();
  259.     }
  260.  
  261.     public List<Patuljak> opadajuceSortiraniPoBrojuUbijenihGoblina() {
  262.         return patuljci.stream()
  263.                 .sorted(Comparator.comparing(Patuljak::getUbioGoblina).reversed())
  264.                 .collect(Collectors.toList());
  265.     }
  266.  
  267.     public Set<Patuljak> patuljciStarijiOd(int godina) {
  268.         int ovaGodina = LocalDate.now().getYear();
  269.         return patuljci.stream()
  270.                 .filter(p -> ovaGodina - p.getGodinaRodjenja() > godina)
  271.                 .collect(Collectors.toSet());
  272.     }
  273.  
  274.     public List<String> imenaPatuljakaRastuceSortiranaPoPrezimenu() {
  275.         return patuljci.stream()
  276.                 .map(Patuljak::getIme)
  277.                 .sorted(Comparator.comparing(s -> s.split(" |$", 2)[1]))
  278.                 .map(s -> s.split(" ")[0])
  279.                 .collect(Collectors.toList());
  280.     }
  281.  
  282.     public Map<Integer, Set<Patuljak>> patuljciRazvrstaniPoGodiniRodjenja() {
  283.         return patuljci.stream()
  284.                 .collect(Collectors.groupingBy(Patuljak::getGodinaRodjenja, Collectors.toSet()));
  285.     }
  286.  
  287.     public Map<Integer, Set<Patuljak>> patuljciRazvrstaniPoVekuRodjenja() {
  288.         return patuljci.stream()
  289.                 .collect(Collectors.groupingBy(p -> p.getGodinaRodjenja() / 100 + 1, Collectors.toSet()));
  290.     }
  291.  
  292.     public boolean postojiPatuljakSaViseZlataOd(double granica) {
  293.         return patuljci.stream()
  294.                 .anyMatch(p -> p.getIskopaoZlata() > granica);
  295.     }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top