Advertisement
Guest User

Untitled

a guest
Nov 27th, 2014
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.31 KB | None | 0 0
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package k2_kolis;
  6.  
  7. import java.util.Comparator;
  8.  
  9. public class Knyga implements Comparable {
  10.  
  11.     private String leidykla = "";
  12.     private String autorius = "";
  13.     private int puslapiai = 0;
  14.     private double kaina = 0.0;
  15.    
  16.     public Knyga(String leidykla, String autorius, int puslapiai, double kaina){
  17.         this.leidykla = leidykla;
  18.         this.autorius = autorius;
  19.         this.puslapiai = puslapiai;
  20.         this.kaina = kaina;
  21.     }
  22.  
  23.     /**
  24.      * @return the leidykla
  25.      */
  26.     public String getLeidykla() {
  27.         return leidykla;
  28.     }
  29.  
  30.     /**
  31.      * @return the autorius
  32.      */
  33.     public String getAutorius() {
  34.         return autorius;
  35.     }
  36.  
  37.     /**
  38.      * @return the puslapiai
  39.      */
  40.     public int getPuslapiai() {
  41.         return puslapiai;
  42.     }
  43.  
  44.     /**
  45.      * @return the kaina
  46.      */
  47.     public double getKaina() {
  48.         return kaina;
  49.     }
  50.    
  51.     public String ToString(){
  52.         return "Leidykla: " + leidykla + ". Autorius: " + autorius +
  53.                ". Puslapiai: " + puslapiai + ". Kaina: " + kaina;
  54.     }
  55.  
  56.    
  57.     public int compareTo(Object o) {
  58.         double kainaKita = ((Knyga)o).getKaina();
  59.         if (kaina > kainaKita) return -1;
  60.         if (kaina < kainaKita) return +1;
  61.         return 0;
  62.     }
  63.    
  64.     public static Comparator<Knyga> pagalPuslapius = new Comparator<Knyga>() {
  65.        public int compare(Knyga o1, Knyga o2) {
  66.           int k1 = ((Knyga) o1).getPuslapiai();
  67.           int k2 = ((Knyga) o2).getPuslapiai();
  68.           // mazejanti tvarka, pradedant nuo didziausio
  69.           if(k1 > k2) return -1;
  70.           if(k1 < k2) return 1;
  71.           return 0;
  72.        }
  73.     };
  74.    
  75.     public static Comparator<Knyga> pagalKaina = new Comparator<Knyga>() {
  76.        public int compare(Knyga o1, Knyga o2) {
  77.           double k1 = ((Knyga) o1).getKaina();
  78.           double k2 = ((Knyga) o2).getKaina();
  79.           // mazejanti tvarka, pradedant nuo didziausio
  80.           if(k1 > k2) return -1;
  81.           if(k1 < k2) return 1;
  82.           return 0;
  83.        }
  84.     };  
  85.    
  86.     public static Comparator<Knyga> pagalAutoriuIrKaina = new Comparator<Knyga>(){
  87.         public int compare(Knyga o1, Knyga o2){
  88.             int result = o1.getAutorius().compareToIgnoreCase(o2.getAutorius());
  89.             if(result == 0){
  90.                 double k1 = ((Knyga) o1).getKaina();
  91.                 double k2 = ((Knyga) o2).getKaina();
  92.                 // mazejanti tvarka, pradedant nuo didziausio
  93.                 if(k1 > k2) return -1;
  94.                 if(k1 < k2) return 1;
  95.                 return 0;
  96.             } else {
  97.                 return result;
  98.             }
  99.         }  
  100.     };
  101.    
  102.     // Palyginimai
  103.     // pagal string
  104.     /*public int compareTo(Object o) {
  105.         return telefonoNumeris.compareTo(((Skambuciai) o).getTelefonoNumeris());
  106.     } */
  107.    
  108.     // pagal int
  109.     /*public int compareTo(Object a) {
  110.         double naudingumasKita = ((Krepsininkas)a).getNaudingumas();
  111.         if (naudingumas > naudingumasKita) return -1;
  112.         if (naudingumas < naudingumasKita) return +1;
  113.         return 0;
  114.     }*/      
  115.    
  116. }
  117. //////////////////////////////////////////////////////////////////////////////////////////////////
  118.  
  119. /*
  120.  * To change this template, choose Tools | Templates
  121.  * and open the template in the editor.
  122.  */
  123. package k2_kolis;
  124.  
  125. import java.util.*;
  126. /**
  127.  *
  128.  * @author Arvis
  129.  */
  130. public class KnyguPrekyba {
  131.  
  132.     LinkedList<Knyga> knygos = new LinkedList<Knyga>();
  133.     LinkedList<Knyga> plonosKnygos = new LinkedList<Knyga>();
  134.    
  135.     //a - metodas rastiPlonasKnygas(int riba), kuris į kitą sąrašą atrinktų knygas, kurių puslapių skaičius yra mažesnis už nurodytą;
  136.     public void rastiPlonasKnygas(int riba){
  137.         for(Knyga k: knygos){
  138.             if(k.getPuslapiai() < riba){
  139.                 plonosKnygos.add(k);
  140.             }
  141.         }
  142.     }
  143.    
  144.     //b - metodas, kuris pradinį sąrašą knygos surūšiuotų pagal autorių bei kainą ir atspausdintų tvarkingą sąrašą;
  145.     public void rusiuotiPagalAutoriuIrKaina(){
  146.         Collections.sort(knygos, Knyga.pagalAutoriuIrKaina);
  147.         System.out.println("Pradinis sarasas surikiuotas pagal autoriu ir kainas");
  148.         for(Knyga k: knygos){
  149.             System.out.println(k.ToString());
  150.         }
  151.     }
  152.    
  153.     //c - metodas, kuris atrinktą sąrašą surikiuotų pagal kainą ir atspausdintų tvarkingą sąrašą;
  154.     public void rikiuotiPagalKaina(){
  155.         Collections.sort(plonosKnygos, Knyga.pagalKaina);
  156.         System.out.println("Atrinktos knygos ir surikiuotos pagal kaina");
  157.         for(Knyga k: plonosKnygos){
  158.             System.out.println(k.ToString());
  159.         }
  160.     }
  161.    
  162.     //d - metodas, kuris rastų kiek galima sudaryti skirtingų knygų porų, kurių bendra kaina yra mažesnė už nurodytą kainą; (išvenkite vienodų porų skaičiavimo)
  163.     public void skirtingosPoros(int riba){
  164.         Knyga [] test = knygos.toArray(new Knyga[knygos.size()]); // padarom masyva
  165.         double bendra = 0.0;
  166.         int kiek = 0;
  167.         for(int i = 0; i < test.length; i++){
  168.             for(int j = 0; j < test.length; j++){
  169.                 if(!test[i].equals(test[j])){
  170.                     bendra = test[i].getKaina() + test[j].getKaina() + bendra;
  171.                     if(bendra < riba)
  172.                         kiek++;
  173.                 }
  174.             }
  175.         }
  176.         System.out.println("Skirtingo poros: " + kiek);
  177.     }
  178.    
  179.     //e - metodas, kuris nustatytų, kiek yra skirtingų autorių ir kiek knygų jie parašė (kiekvienas atskirai) - panaudojant TreeMap klasę;
  180.     public void skirtingiAutoriaiIrKnygos(){
  181.         Map<String, Integer> atrinkti = new TreeMap<String, Integer>();
  182.         for(Knyga k: knygos){
  183.             if(atrinkti.containsKey(k.getAutorius())){
  184.                 atrinkti.put(k.getAutorius(),
  185.                              atrinkti.get(k.getAutorius()) + k.getPuslapiai());
  186.             } else {
  187.                 atrinkti.put(k.getAutorius(), k.getPuslapiai());
  188.             }
  189.         }
  190.         System.out.println("TreeMapas:");
  191.         for(Map.Entry<String, Integer> m: atrinkti.entrySet()){
  192.             System.out.println("Autorius: " + m.getKey() + ", puslapiu: " + m.getValue());
  193.         }
  194.     }
  195.    
  196.     //f - metodas, kuris nustatytų, kiek yra skirtingų leidyklų ir kiek knygų jos išleido (kiekviena atskirai) - panaudojant HashMap klasę
  197.     public void skirtingosLeidyklos(){
  198.         Map<String, Integer> leidyklos = new HashMap<String, Integer>();
  199.         for(Knyga k: knygos){
  200.             if(leidyklos.containsKey(k.getLeidykla())){
  201.                 leidyklos.put(k.getLeidykla(),
  202.                               leidyklos.get(k.getLeidykla()) + 1);
  203.             } else {
  204.                 leidyklos.put(k.getLeidykla(), 1);
  205.             }
  206.         }
  207.         System.out.println("HashMap:");
  208.         for(Map.Entry<String, Integer> m: leidyklos.entrySet()){
  209.             System.out.println("Leidykla: " + m.getKey() + ", knygu: " + m.getValue());
  210.         }
  211.     }
  212.    
  213.     //g - testavimo metodas, kuris suformuotų sąrašą knygos su objektais, pateiktais duotoje lentelėje ir patikrintų visus realizuotus metodus;
  214.     public void testavimas(){
  215.         knygos.add(new Knyga("Vaga", "Vaižgantas", 49, 19.55));
  216.         knygos.add(new Knyga("Vaga", "Remarkas", 86, 27.55));
  217.         knygos.add(new Knyga("AlmaLitera", "Avyžius", 207, 23.55));
  218.         knygos.add(new Knyga("Vaga", "Avyžius", 127, 9.55));
  219.         knygos.add(new Knyga("Vaga", "Baltušis", 99, 19.55));
  220.         knygos.add(new Knyga("Mintis", "Remarkas", 123, 7.55));
  221.         knygos.add(new Knyga("Mintis", "Remarkas", 207, 19.55));
  222.         knygos.add(new Knyga("Mintis", "Avyžius", 127, 8.55));
  223.         knygos.add(new Knyga("Mintis", "Avyžius", 384, 19.55));
  224.        
  225.         // Atlikti metodai
  226.         rastiPlonasKnygas(100);
  227.        
  228.         rusiuotiPagalAutoriuIrKaina();
  229.         rikiuotiPagalKaina();
  230.        
  231.         skirtingosPoros(100);
  232.        
  233.         skirtingiAutoriaiIrKnygos();
  234.        
  235.         skirtingosLeidyklos();
  236.     }
  237.    
  238.     //h - pagrindinis metodas, inicijuojantis testavimo metodą.
  239.     public static void main(String args[]){
  240.         new KnyguPrekyba().testavimas();
  241.     }
  242.    
  243. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement