Java HACKS
Go through progression of understanding a Static Class. Build a purposeful static Class, no Objects.
- Calculate common operations on a Date field, age since date, older of two dates, number of seconds since date
- Calculate stats functions on an array of values: mean, median, mode.
// Import statements
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
// Defining public class
public class UtilityClass {
// Static method to calculate age since a given date
public static int calculateAgeSinceDate(Date birthDate, Date currentDate) {
long diff = currentDate.getTime() - birthDate.getTime();
return (int) (diff / (1000L * 60 * 60 * 24 * 365));
}
// Static method to find the older of two dates
public static Date olderDate(Date date1, Date date2) {
return date1.before(date2) ? date1 : date2;
}
// Static method to calculate the number of seconds since a given date
public static long secondsSinceDate(Date referenceDate, Date currentDate) {
long diff = currentDate.getTime() - referenceDate.getTime();
return diff / 1000L;
}
// Static method to calculate the mean of an array of values
public static double calculateMean(double[] values) {
double sum = 0;
for (double value : values) {
sum += value;
}
return sum / values.length;
}
// Static method to calculate the median of an array of values
public static double calculateMedian(double[] values) {
Arrays.sort(values);
int middle = values.length / 2;
if (values.length % 2 == 0) {
return (values[middle - 1] + values[middle]) / 2.0;
} else {
return values[middle];
}
}
// Static method to calculate the mode of an array of values
public static double calculateMode(double[] values) {
Map<Double, Integer> valueCount = new HashMap<>();
double mode = 0;
int maxCount = 0;
for (double value : values) {
int count = valueCount.getOrDefault(value, 0) + 1;
valueCount.put(value, count);
if (count > maxCount) {
maxCount = count;
mode = value;
}
}
return mode;
}
public static void main(String[] args) {
// Example usage
Date birthDate = new Date(90, 0, 1); // January 1, 1990
Date currentDate = new Date(); // Current date
int age = calculateAgeSinceDate(birthDate, currentDate);
Date older = olderDate(birthDate, currentDate);
long seconds = secondsSinceDate(birthDate, currentDate);
double[] data = { 5.2, 3.7, 8.6, 2.1, 5.2, 7.9, 8.6, 3.7, 7.9 };
double mean = calculateMean(data);
double median = calculateMedian(data);
double mode = calculateMode(data);
// Print results
System.out.println("Age: " + age);
System.out.println("Older Date: " + older);
System.out.println("Seconds since Date: " + seconds);
System.out.println("Mean: " + mean);
System.out.println("Median: " + median);
System.out.println("Mode: " + mode);
}
}
UtilityClass.main(new String[]{});
Age: 33
Older Date: Mon Jan 01 00:00:00 PST 1990
Seconds since Date: 1061800189
Mean: 5.877777777777778
Median: 5.2
Mode: 3.7
This code defines a UtilityClass with static methods for performing common date and statistics operations. It includes examples of how to use these methods in the main method at the end of the class.