Advertisement
UmbertoKing

LP2esame1

Jan 17th, 2015
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.67 KB | None | 0 0
  1. package com.company;
  2. import java.util.*;
  3. import java.lang.*;
  4. import java.io.*;
  5.  
  6. class A {
  7.     public String f(Object x, int n) { return "A1"; }
  8.     public String f(A x, int n) { return "A2:" + n; }
  9.     public String f(A x, double n) { return "A3:" + x.f(x, (int) n); }
  10.     private String f(B x, int n) { return "A4"; }
  11. }
  12.  
  13. class B extends A {
  14.     public String f(B x, double n) { return "B2:" + f((A) x, 2); }
  15.     public String f(A x, double n) { return "B1:" + n; }
  16.     public String f(A x, int n) { return "B3"; }
  17. }
  18.  
  19. enum Nutrient{
  20.     FAT, CARBO, PROTEIN;
  21. }
  22.  
  23. class NutrInfo implements Comparable<NutrInfo>{
  24.  
  25.     public double kcal;
  26.     public EnumMap<Nutrient, Double> vals = new EnumMap<Nutrient, Double>(Nutrient.class);
  27.  
  28.     NutrInfo(double kcal){
  29.         this.kcal = kcal;
  30.     }
  31.  
  32.     @Override
  33.     public int compareTo(NutrInfo o) {
  34.         return (int)(kcal - o.kcal);
  35.     }
  36.  
  37.     public void setNutrient(Nutrient n, double val){
  38.         vals.put(n, val);
  39.     }
  40.  
  41.     public static Comparator<NutrInfo> comparatorBy(final Nutrient n){
  42.         return new Comparator<NutrInfo>() {
  43.             @Override
  44.             public int compare(NutrInfo o1, NutrInfo o2){
  45.                 return (int)(o1.vals.get(n) - o2.vals.get(n));
  46.             }
  47.         };
  48.     }
  49. }
  50.  
  51. class Exchanger<T> {
  52.  
  53.     T val1 = null;
  54.     T val2 = null;
  55.  
  56.     public synchronized T exchange(T val) throws InterruptedException{
  57.         if (val1 == null) {
  58.             val1 = val;
  59.             this.wait();
  60.             return val2;
  61.         }
  62.         else if (val2 == null) {
  63.             val2 = val;
  64.             this.notifyAll();
  65.             return val1;
  66.         }
  67.         else throw new RuntimeException();
  68.     }
  69. }
  70.  
  71. public class Main {
  72.  
  73.     public static <K,V> Map<K,V> subMap(Map<K,V> m, Collection<?> c){
  74.         HashMap<K,V> map = new HashMap<K,V>();
  75.         for(K key: m.keySet()){
  76.             if (c.contains(key)){
  77.                 map.put(key, m.get(key));
  78.             }
  79.         }
  80.         return map;
  81.     }
  82.  
  83.     public static void main(String[] args) throws InterruptedException{
  84.  
  85.         //eser1
  86.         B beta = new B();
  87.         A alfa = beta;
  88.         System.out.println(alfa.f(null, 2L));
  89.         System.out.println (beta. f (beta, 5.0) );
  90.         System.out.println(12 & 2);
  91.  
  92.         //eser2
  93.         NutrInfo x = new NutrInfo(500);
  94.         x.setNutrient(Nutrient.FAT, 12.0);
  95.         x.setNutrient(Nutrient.CARBO, 20.0);
  96.         x.setNutrient(Nutrient.PROTEIN, 15.0);
  97.         Comparator<NutrInfo> c = NutrInfo.comparatorBy(Nutrient.FAT);
  98.         for (Double val : x.vals.values()) System.out.print(val.toString() + "\n");
  99.  
  100.         //eser3
  101.         final Exchanger<String> e = new Exchanger<String>();
  102.         Thread t = new Thread(){
  103.             @Override
  104.             public void run(){
  105.                 try {
  106.                     String a = e.exchange("ciao\n");
  107.                     System.out.print(a);
  108.                 }
  109.                 catch(Exception e){
  110.                     System.out.print(e.getMessage());
  111.                 }
  112.             }
  113.         };
  114.         t.start();
  115.         String a = e.exchange("Pippo\n");
  116.         System.out.print(a);
  117.         try {
  118.             e.exchange("Error!");
  119.         } catch (RuntimeException e1){
  120.             System.out.print("Ok\n");
  121.         }
  122.         t.join();
  123.  
  124.         //eser4
  125.         Collection<Object> col = new LinkedList<Object>();
  126.         for (Object o : x.vals.keySet()){
  127.             col.add(o);
  128.         }
  129.         col.add(1);
  130.         col.add(666L);
  131.         col.add(666.666);
  132.         for(Nutrient key : subMap(x.vals, col).keySet()){
  133.             System.out.print(key.toString() + "\n");
  134.         }
  135.  
  136.     }
  137.  
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement