Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package k2_kolis;
- import java.util.Comparator;
- public class Knyga implements Comparable {
- private String leidykla = "";
- private String autorius = "";
- private int puslapiai = 0;
- private double kaina = 0.0;
- public Knyga(String leidykla, String autorius, int puslapiai, double kaina){
- this.leidykla = leidykla;
- this.autorius = autorius;
- this.puslapiai = puslapiai;
- this.kaina = kaina;
- }
- /**
- * @return the leidykla
- */
- public String getLeidykla() {
- return leidykla;
- }
- /**
- * @return the autorius
- */
- public String getAutorius() {
- return autorius;
- }
- /**
- * @return the puslapiai
- */
- public int getPuslapiai() {
- return puslapiai;
- }
- /**
- * @return the kaina
- */
- public double getKaina() {
- return kaina;
- }
- public String ToString(){
- return "Leidykla: " + leidykla + ". Autorius: " + autorius +
- ". Puslapiai: " + puslapiai + ". Kaina: " + kaina;
- }
- public int compareTo(Object o) {
- double kainaKita = ((Knyga)o).getKaina();
- if (kaina > kainaKita) return -1;
- if (kaina < kainaKita) return +1;
- return 0;
- }
- public static Comparator<Knyga> pagalPuslapius = new Comparator<Knyga>() {
- public int compare(Knyga o1, Knyga o2) {
- int k1 = ((Knyga) o1).getPuslapiai();
- int k2 = ((Knyga) o2).getPuslapiai();
- // mazejanti tvarka, pradedant nuo didziausio
- if(k1 > k2) return -1;
- if(k1 < k2) return 1;
- return 0;
- }
- };
- public static Comparator<Knyga> pagalKaina = new Comparator<Knyga>() {
- public int compare(Knyga o1, Knyga o2) {
- double k1 = ((Knyga) o1).getKaina();
- double k2 = ((Knyga) o2).getKaina();
- // mazejanti tvarka, pradedant nuo didziausio
- if(k1 > k2) return -1;
- if(k1 < k2) return 1;
- return 0;
- }
- };
- public static Comparator<Knyga> pagalAutoriuIrKaina = new Comparator<Knyga>(){
- public int compare(Knyga o1, Knyga o2){
- int result = o1.getAutorius().compareToIgnoreCase(o2.getAutorius());
- if(result == 0){
- double k1 = ((Knyga) o1).getKaina();
- double k2 = ((Knyga) o2).getKaina();
- // mazejanti tvarka, pradedant nuo didziausio
- if(k1 > k2) return -1;
- if(k1 < k2) return 1;
- return 0;
- } else {
- return result;
- }
- }
- };
- // Palyginimai
- // pagal string
- /*public int compareTo(Object o) {
- return telefonoNumeris.compareTo(((Skambuciai) o).getTelefonoNumeris());
- } */
- // pagal int
- /*public int compareTo(Object a) {
- double naudingumasKita = ((Krepsininkas)a).getNaudingumas();
- if (naudingumas > naudingumasKita) return -1;
- if (naudingumas < naudingumasKita) return +1;
- return 0;
- }*/
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package k2_kolis;
- import java.util.*;
- /**
- *
- * @author Arvis
- */
- public class KnyguPrekyba {
- LinkedList<Knyga> knygos = new LinkedList<Knyga>();
- LinkedList<Knyga> plonosKnygos = new LinkedList<Knyga>();
- //a - metodas rastiPlonasKnygas(int riba), kuris į kitą sąrašą atrinktų knygas, kurių puslapių skaičius yra mažesnis už nurodytą;
- public void rastiPlonasKnygas(int riba){
- for(Knyga k: knygos){
- if(k.getPuslapiai() < riba){
- plonosKnygos.add(k);
- }
- }
- }
- //b - metodas, kuris pradinį sąrašą knygos surūšiuotų pagal autorių bei kainą ir atspausdintų tvarkingą sąrašą;
- public void rusiuotiPagalAutoriuIrKaina(){
- Collections.sort(knygos, Knyga.pagalAutoriuIrKaina);
- System.out.println("Pradinis sarasas surikiuotas pagal autoriu ir kainas");
- for(Knyga k: knygos){
- System.out.println(k.ToString());
- }
- }
- //c - metodas, kuris atrinktą sąrašą surikiuotų pagal kainą ir atspausdintų tvarkingą sąrašą;
- public void rikiuotiPagalKaina(){
- Collections.sort(plonosKnygos, Knyga.pagalKaina);
- System.out.println("Atrinktos knygos ir surikiuotos pagal kaina");
- for(Knyga k: plonosKnygos){
- System.out.println(k.ToString());
- }
- }
- //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)
- public void skirtingosPoros(int riba){
- Knyga [] test = knygos.toArray(new Knyga[knygos.size()]); // padarom masyva
- double bendra = 0.0;
- int kiek = 0;
- for(int i = 0; i < test.length; i++){
- for(int j = 0; j < test.length; j++){
- if(!test[i].equals(test[j])){
- bendra = test[i].getKaina() + test[j].getKaina() + bendra;
- if(bendra < riba)
- kiek++;
- }
- }
- }
- System.out.println("Skirtingo poros: " + kiek);
- }
- //e - metodas, kuris nustatytų, kiek yra skirtingų autorių ir kiek knygų jie parašė (kiekvienas atskirai) - panaudojant TreeMap klasę;
- public void skirtingiAutoriaiIrKnygos(){
- Map<String, Integer> atrinkti = new TreeMap<String, Integer>();
- for(Knyga k: knygos){
- if(atrinkti.containsKey(k.getAutorius())){
- atrinkti.put(k.getAutorius(),
- atrinkti.get(k.getAutorius()) + k.getPuslapiai());
- } else {
- atrinkti.put(k.getAutorius(), k.getPuslapiai());
- }
- }
- System.out.println("TreeMapas:");
- for(Map.Entry<String, Integer> m: atrinkti.entrySet()){
- System.out.println("Autorius: " + m.getKey() + ", puslapiu: " + m.getValue());
- }
- }
- //f - metodas, kuris nustatytų, kiek yra skirtingų leidyklų ir kiek knygų jos išleido (kiekviena atskirai) - panaudojant HashMap klasę
- public void skirtingosLeidyklos(){
- Map<String, Integer> leidyklos = new HashMap<String, Integer>();
- for(Knyga k: knygos){
- if(leidyklos.containsKey(k.getLeidykla())){
- leidyklos.put(k.getLeidykla(),
- leidyklos.get(k.getLeidykla()) + 1);
- } else {
- leidyklos.put(k.getLeidykla(), 1);
- }
- }
- System.out.println("HashMap:");
- for(Map.Entry<String, Integer> m: leidyklos.entrySet()){
- System.out.println("Leidykla: " + m.getKey() + ", knygu: " + m.getValue());
- }
- }
- //g - testavimo metodas, kuris suformuotų sąrašą knygos su objektais, pateiktais duotoje lentelėje ir patikrintų visus realizuotus metodus;
- public void testavimas(){
- knygos.add(new Knyga("Vaga", "Vaižgantas", 49, 19.55));
- knygos.add(new Knyga("Vaga", "Remarkas", 86, 27.55));
- knygos.add(new Knyga("AlmaLitera", "Avyžius", 207, 23.55));
- knygos.add(new Knyga("Vaga", "Avyžius", 127, 9.55));
- knygos.add(new Knyga("Vaga", "Baltušis", 99, 19.55));
- knygos.add(new Knyga("Mintis", "Remarkas", 123, 7.55));
- knygos.add(new Knyga("Mintis", "Remarkas", 207, 19.55));
- knygos.add(new Knyga("Mintis", "Avyžius", 127, 8.55));
- knygos.add(new Knyga("Mintis", "Avyžius", 384, 19.55));
- // Atlikti metodai
- rastiPlonasKnygas(100);
- rusiuotiPagalAutoriuIrKaina();
- rikiuotiPagalKaina();
- skirtingosPoros(100);
- skirtingiAutoriaiIrKnygos();
- skirtingosLeidyklos();
- }
- //h - pagrindinis metodas, inicijuojantis testavimo metodą.
- public static void main(String args[]){
- new KnyguPrekyba().testavimas();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement