java - Generic Method to find the median of 3 values -
i needed method median of 3 values, thought opportunity write generic method since don't have practiced. wrote , seems pretty straight-forward, though warning, seems work fine, according tests.
i'm aware use inherently sorted set, or collections.sort(), approach sake of understanding.
i want pinpoint few things:
- i noticed doesn't work if tried declare
medianhelperarrays.aslist(a, b, c)why this? trying search gives me unrelated results , it's otherwise elusive since i'm not sure happening.unsupportedoperationexception, not present way have below. - why getting warning? wrong/missing?
the method follows:
private static <t extends comparable> t median(t a, t b, t c) { list<t> medianhelper = new arraylist<>(); t max; t min; medianhelper.add(a); medianhelper.add(b); medianhelper.add(c); if (a.compareto(b) >= 0) { max = a; min = b; } else { max = b; min = a; } if (max.compareto(c) == -1) { max = c; } if (min.compareto(c) >= 0) { min = c; } medianhelper.remove(max); medianhelper.remove(min); return medianhelper.get(0); }
you haven't correctly introduced type-parameter t, comparable generic, too.
it should rather be:
private static <t extends comparable<? super t>> t median(t a, t b, t c) furthermore, can sort medianhelper list, since elements will comparable. method can shortened to:
private static <t extends comparable<? super t>> t median(t a, t b, t c) { list<t> medianhelper = arrays.aslist(a, b, c); collections.sort(medianhelper); return medianhelper.get(1); } note arrays.aslist() returns unmodifiable list, means you're not allowed add/remove elements after it's created. if wish comparisons yourself, can use new arraylist<> instead of arrays.aslist() , manually add elements it.
Comments
Post a Comment