Filip_Markoski

[NP] Генеричка тројка

Nov 12th, 2017
500
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.52 KB | None | 0 0
  1. import java.util.*;
  2. import java.util.concurrent.atomic.AtomicInteger;
  3.  
  4. class Triple<T extends Number> {
  5.     List<T> numbers;
  6.  
  7.     public Triple(T... numbers) {
  8.         this.numbers = new ArrayList<>(Arrays.asList(numbers));
  9.     }
  10.  
  11.     /*
  12.     public double max(){
  13.         if (a.compareTo(b) > 0 && a.compareTo(c) > 0){
  14.             return (double) a;
  15.         } else if (b.compareTo(a) > 0 && b.compareTo(c) > 0){
  16.             return (double) b;
  17.         } else {
  18.             return (double) c;
  19.         }
  20.     }
  21.     */
  22.  
  23.     /*
  24.         public double max() {
  25.             return Math.max(Math.max(.doubleValue(), b.doubleValue()), c.doubleValue());
  26.         }
  27.     */
  28.  
  29.     public double max() {
  30.         /*T max = numbers.get(0);
  31.         for (int i = 0; i < numbers.size(); i++) {
  32.             if (max.doubleValue() < numbers.get(i).doubleValue()) {
  33.                 max = numbers.get(i);
  34.             }
  35.         }
  36.         return max.doubleValue();*/
  37.         return numbers.stream()
  38.                 .mapToDouble(Number::doubleValue)
  39.                 .max()
  40.                 .getAsDouble();
  41.     }
  42.  
  43.     /*
  44.         public double average() {
  45.             return (a.doubleValue() + b.doubleValue() + c.doubleValue()) / 3;
  46.         }
  47.     */
  48.  
  49.     /*
  50.     public double sum() {
  51.         double sum = 0;
  52.         for (int i = 0; i < numbers.size(); i++) {
  53.             sum = numbers.get(i).doubleValue();
  54.         }
  55.         return sum;
  56.     }
  57.     */
  58.  
  59.     public double sum() {
  60.         /* return numbers.stream().mapToDouble(numbers -> numbers.doubleValue()).sum(); */
  61.         return numbers.stream().mapToDouble(Number::doubleValue).sum();
  62.     }
  63.  
  64.     public double average() {
  65.         /*return sum() / numbers.size();*/
  66.         return numbers.stream()
  67.                 .mapToDouble(Number::doubleValue)
  68.                 .average()
  69.                 .getAsDouble();
  70.     }
  71.  
  72.     public void swap(T left, T right) {
  73.         T temp = left;
  74.         left = right;
  75.         right = temp;
  76.     }
  77.  
  78.     public static Comparator<? super Number> comparator = (Comparator<Number>) (a, b) -> {
  79.         if (a.doubleValue() > b.doubleValue()) {
  80.             return 1;
  81.         } else if (a.doubleValue() < b.doubleValue()) {
  82.             return -1;
  83.         }
  84.         return 0;
  85.     };
  86.  
  87.     public void sort() {
  88.         /*        Using collections
  89.         Collections.sort(numbers, comparator);         */
  90.  
  91.         /* Using ArrayList's sort */
  92.         numbers.sort(comparator);
  93.     }
  94.  
  95.     public String toString() {
  96.         return String.format("%.2f %.2f %.2f",
  97.                 numbers.get(0).doubleValue(),
  98.                 numbers.get(1).doubleValue(),
  99.                 numbers.get(2).doubleValue());
  100.     }
  101. }
  102.  
  103. public class TripleTest {
  104.     public static void main(String[] args) {
  105.         Scanner scanner = new Scanner(System.in);
  106.         int a = scanner.nextInt();
  107.         int b = scanner.nextInt();
  108.         int c = scanner.nextInt();
  109.         Triple<Integer> tInt = new Triple<Integer>(a, b, c);
  110.         System.out.printf("%.2f\n", tInt.max());
  111.         System.out.printf("%.2f\n", tInt.average());
  112.         tInt.sort();
  113.         System.out.println(tInt);
  114.         float fa = scanner.nextFloat();
  115.         float fb = scanner.nextFloat();
  116.         float fc = scanner.nextFloat();
  117.         Triple<Float> tFloat = new Triple<Float>(fa, fb, fc);
  118.         System.out.printf("%.2f\n", tFloat.max());
  119.         System.out.printf("%.2f\n", tFloat.average());
  120.         tFloat.sort();
  121.         System.out.println(tFloat);
  122.         double da = scanner.nextDouble();
  123.         double db = scanner.nextDouble();
  124.         double dc = scanner.nextDouble();
  125.         Triple<Double> tDouble = new Triple<Double>(da, db, dc);
  126.         System.out.printf("%.2f\n", tDouble.max());
  127.         System.out.printf("%.2f\n", tDouble.average());
  128.         tDouble.sort();
  129.         System.out.println(tDouble);
  130.  
  131.         /*
  132.         System.out.print("\n My Code \n");
  133.         int zero = 0;
  134.         int one = 1;
  135.         System.out.println(String.format("zero = %d \t one = %d", zero, one));
  136.         swapPrimitives(zero, one);
  137.         int temp = zero;
  138.         zero = one;
  139.         one = temp;
  140.         swapIntegers(zero, one);
  141.         System.out.println(String.format("zero = %d \t one = %d", zero, one));*/
  142.  
  143.     }
  144.  
  145.     public static void swapPrimitives(int left, int right) {
  146.         int temp = left;
  147.         left = right;
  148.         right = temp;
  149.     }
  150.  
  151.     public static void swapIntegers(AtomicInteger left, AtomicInteger right) {
  152.         left.set(right.getAndSet(left.get()));
  153.     }
  154.  
  155. }
Advertisement
Add Comment
Please, Sign In to add comment