Java 使用LinkedList<E>。 程序有时候需要将任务按流水式进行,例如评判体操选手的任务按流水式为依次的三个步骤:录入裁判给选手的分数,去掉一个最高分和一个最低分,计算出平均成绩。编写程序,搭建流水线,只需将评判体操选手的任务交给流水线即可
时间: 2024-02-28 19:55:36 浏览: 66
以下是一个简单的Java程序,使用LinkedList实现了这个例子中的流水线任务:
```java
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
// 创建一个LinkedList,用于存储评判体操选手的成绩
LinkedList<Double> scores = new LinkedList<>();
// 模拟录入裁判给选手的分数
scores.add(9.5);
scores.add(9.7);
scores.add(9.8);
scores.add(9.6);
scores.add(9.9);
// 创建一个流水线,依次执行三个步骤:去掉一个最高分和一个最低分,计算平均成绩
Pipeline<Double> pipeline = new Pipeline<>();
pipeline.addStep(new RemoveMaxAndMinStep());
pipeline.addStep(new CalculateAverageStep());
// 将评判体操选手的成绩交给流水线
double averageScore = pipeline.execute(scores);
// 输出平均成绩
System.out.println("选手的平均成绩为:" + averageScore);
}
}
// 流水线中的步骤接口
interface Step<E> {
E execute(E input);
}
// 去掉一个最高分和一个最低分的步骤
class RemoveMaxAndMinStep implements Step<LinkedList<Double>> {
public LinkedList<Double> execute(LinkedList<Double> input) {
// 找出最高分和最低分
double maxScore = Double.MIN_VALUE;
double minScore = Double.MAX_VALUE;
for (double score : input) {
if (score > maxScore) {
maxScore = score;
}
if (score < minScore) {
minScore = score;
}
}
// 去掉最高分和最低分
input.remove(Double.valueOf(maxScore));
input.remove(Double.valueOf(minScore));
return input;
}
}
// 计算平均成绩的步骤
class CalculateAverageStep implements Step<LinkedList<Double>> {
public Double execute(LinkedList<Double> input) {
// 计算平均成绩
double sum = 0.0;
for (double score : input) {
sum += score;
}
double averageScore = sum / input.size();
return averageScore;
}
}
// 流水线类
class Pipeline<E> {
private LinkedList<Step<E>> steps = new LinkedList<>();
// 添加步骤
public void addStep(Step<E> step) {
steps.add(step);
}
// 执行流水线中的所有步骤
public E execute(E input) {
for (Step<E> step : steps) {
input = step.execute(input);
}
return input;
}
}
```
在这个程序中,我们首先创建了一个LinkedList,用于存储评判体操选手的成绩。然后,我们创建了一个Pipeline对象,依次添加了两个步骤:RemoveMaxAndMinStep和CalculateAverageStep。最后,我们将评判体操选手的成绩交给流水线,通过执行流水线中的所有步骤,得到平均成绩并输出。
阅读全文