मैं लैम्ब्डा अभिव्यक्ति का उपयोग करके सामान्य आंकड़ों को लागू करने वाली एक साधारण कक्षा बनाना चाहता हूं। मैं सोच रहा हूं कि मैं सांख्यिकीय() विधि में स्विच केस का उपयोग कैसे कर सकता हूं?जावा 8 रिमैक्टरिंग लैम्ब्डा एक्सप्रेशन
उदाहरण के लिए, मैं आदि सूची का विचरण,
धन्यवाद गणना करने के लिए एक नया लैम्ब्डा लिखने के लिए कर सकते हैं।
public class DescriptiveStatistics {
public static void main(String[] args) {
List<Double> numbers = Arrays.asList(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0);
numbers.stream().forEach(n-> System.out.print(n + " "));
System.out.println();
System.out.println("Descriptive statistics");
System.out.println("Sum: " + statistic(numbers, "Sum"));
System.out.println("Max: " + statistic(numbers, "Max"));
System.out.println("Min: " + statistic(numbers, "Min"));
System.out.println("Average: " + statistic(numbers, "Average"));
System.out.println("Count: " + statistic(numbers, "Count"));
}
private static double statistic(List<Double> numbers, String function) {
switch (function.toLowerCase()) {
case "sum":
return numbers.stream().mapToDouble(Double::doubleValue).sum();
case "max":
return numbers.stream().mapToDouble(Double::doubleValue).max().getAsDouble();
case "min":
return numbers.stream().mapToDouble(Double::doubleValue).min().getAsDouble();
case "average":
return numbers.stream().mapToDouble(Double::doubleValue).average().getAsDouble();
case "count":
return numbers.stream().mapToDouble(Double::doubleValue).count();
}
return 0;
}
मैं इस
private static double newStatistics(List<Double> numbers, Function<Double, Double> function){
return numbers.stream().mapToDouble(Double::doubleValue).function();
}
आप का उपयोग करना चाहिए या तो एक 'enum' (यदि आप समय से आगे सभी कार्यों को पता है) या एक रणनीति इंटरफ़ेस (यदि आपको रनटाइम पर नए प्लग करने में सक्षम होना चाहिए)। – chrylis
मुझे लगता है कि रणनीति इंटरफेस सवाल का जवाब देता है। धन्यवाद! – CheJharia