Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import java.util.*;
- import java.lang.*;
- import java.io.*;
- class A {
- public String f(Object x, int n) { return "A1"; }
- public String f(A x, int n) { return "A2:" + n; }
- public String f(A x, double n) { return "A3:" + x.f(x, (int) n); }
- private String f(B x, int n) { return "A4"; }
- }
- class B extends A {
- public String f(B x, double n) { return "B2:" + f((A) x, 2); }
- public String f(A x, double n) { return "B1:" + n; }
- public String f(A x, int n) { return "B3"; }
- }
- enum Nutrient{
- FAT, CARBO, PROTEIN;
- }
- class NutrInfo implements Comparable<NutrInfo>{
- public double kcal;
- public EnumMap<Nutrient, Double> vals = new EnumMap<Nutrient, Double>(Nutrient.class);
- NutrInfo(double kcal){
- this.kcal = kcal;
- }
- @Override
- public int compareTo(NutrInfo o) {
- return (int)(kcal - o.kcal);
- }
- public void setNutrient(Nutrient n, double val){
- vals.put(n, val);
- }
- public static Comparator<NutrInfo> comparatorBy(final Nutrient n){
- return new Comparator<NutrInfo>() {
- @Override
- public int compare(NutrInfo o1, NutrInfo o2){
- return (int)(o1.vals.get(n) - o2.vals.get(n));
- }
- };
- }
- }
- class Exchanger<T> {
- T val1 = null;
- T val2 = null;
- public synchronized T exchange(T val) throws InterruptedException{
- if (val1 == null) {
- val1 = val;
- this.wait();
- return val2;
- }
- else if (val2 == null) {
- val2 = val;
- this.notifyAll();
- return val1;
- }
- else throw new RuntimeException();
- }
- }
- public class Main {
- public static <K,V> Map<K,V> subMap(Map<K,V> m, Collection<?> c){
- HashMap<K,V> map = new HashMap<K,V>();
- for(K key: m.keySet()){
- if (c.contains(key)){
- map.put(key, m.get(key));
- }
- }
- return map;
- }
- public static void main(String[] args) throws InterruptedException{
- //eser1
- B beta = new B();
- A alfa = beta;
- System.out.println(alfa.f(null, 2L));
- System.out.println (beta. f (beta, 5.0) );
- System.out.println(12 & 2);
- //eser2
- NutrInfo x = new NutrInfo(500);
- x.setNutrient(Nutrient.FAT, 12.0);
- x.setNutrient(Nutrient.CARBO, 20.0);
- x.setNutrient(Nutrient.PROTEIN, 15.0);
- Comparator<NutrInfo> c = NutrInfo.comparatorBy(Nutrient.FAT);
- for (Double val : x.vals.values()) System.out.print(val.toString() + "\n");
- //eser3
- final Exchanger<String> e = new Exchanger<String>();
- Thread t = new Thread(){
- @Override
- public void run(){
- try {
- String a = e.exchange("ciao\n");
- System.out.print(a);
- }
- catch(Exception e){
- System.out.print(e.getMessage());
- }
- }
- };
- t.start();
- String a = e.exchange("Pippo\n");
- System.out.print(a);
- try {
- e.exchange("Error!");
- } catch (RuntimeException e1){
- System.out.print("Ok\n");
- }
- t.join();
- //eser4
- Collection<Object> col = new LinkedList<Object>();
- for (Object o : x.vals.keySet()){
- col.add(o);
- }
- col.add(1);
- col.add(666L);
- col.add(666.666);
- for(Nutrient key : subMap(x.vals, col).keySet()){
- System.out.print(key.toString() + "\n");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement