[ACCEPTED]-How to find maximum value of set of variables-max
In Java, you can use Math.max like this:
double maxStock = Math.max( firstQuarter, Math.max( secondQuarter, Math.max( thirdQuarter, fourthQuarter ) ) );
Not the 3 most elegant, but it will work.
Alternatively, for 2 a more robust solution define the following 1 function:
private double findMax(double... vals) {
double max = Double.NEGATIVE_INFINITY;
for (double d : vals) {
if (d > max) max = d;
}
return max;
}
Which you can then call by:
double maxStock = findMax(firstQuarter, secondQuarter, thirdQuarter, fourthQuarter);
One method to rule them all
public static <T extends Comparable<T>> T max(T...values) {
if (values.length <= 0)
throw new IllegalArgumentException();
T m = values[0];
for (int i = 1; i < values.length; ++i) {
if (values[i].compareTo(m) > 0)
m = values[i];
}
return m;
}
0
With primitive variables the best choice 5 maybe with Arrays or Collections:
Arrays:
double [ ] data = { firstQuarter , secondQuarter , thirdQuarter , fourtQuarter ) ;
Arrays . sort ( data ) [ 3 ] ;
Collections:
List<Double> data = new Arraylist<Double>();
data.add(firstQuarter);
data.add(secondQuarter);
data.add(thirdQuarter);
data.add(foutQuarter);
Collections.sort(data);
data.get(3);
And 4 if you work with Objects you may use Collections 3 with a Comparator:
class Quarter {
private double value;
private int order;
// gets and sets
}
And to get the max value:
List<Quarter> list = new ArrayList<Quarter>();
Quarter fisrt = new Quarter();
first.setValue(firstQuarter);
first.setOrder(1);
list.add(first);
// Do the same with the other values
Collections.sort(list, new Comparator<Quarter>(){
compare(Object o1, Object o2){
return Double.valueOf(o1.getValue()).compareTo(o2.getValue());
}
}
This 2 may be more complex, but if you working 1 with objects i think is better to work.
I believe now in Java 8 the most concise 1 version would look like this:
DoubleStream.of(firstQuarter , secondQuarter , thirdQuarter , fourtQuarter).max();
double [ ] data = { firstQuarter , secondQuarter , thirdQuarter , fourtQuarter ) ;
Arrays . sort ( data ) [ 3 ] ;
0
A little late to the party, but for anyone 9 else viewing this question, java 8 has primitive 8 stream types that implement exactly this
Collection<Integer> values = new ArrayList<>();
OptionalInt max = values.stream().mapToInt((x) -> x).max();
mapToInt
7 is the key function that describes how to 6 convert the input to an integer type. The 5 resulting stream then has additional aggregators 4 and collectors specific to integer types, one 3 of the being max()
.
The result value can then 2 be extracted from the OptionalInt
, if the operation 1 was successful
Max = firstQuarter;
If(secondQuarter > max)
Max = secondQuarter;
... And so on
0
More Related questions
We use cookies to improve the performance of the site. By staying on our site, you agree to the terms of use of cookies.