容器的实现

1.Container

//利用一个容器来记录测量过的对象
public class Container {
​
    private Object[] objs = new Object[10];
​
    private int size = 0;
    private Object max;
    private Object min;
    private double avg;
    private double sum; // 总计算值
​
    private Measurable measurable;
​
    // 初始化测量工具
    public void setMeasurable(Measurable measurable) {
        this.measurable = measurable;
    }
​
    // 核心方法
    public void add(Object o) {
        if (measurable == null) {
            System.out.println("测量工具还没有初始化,系统不能正常运行");
            throw new RuntimeException("系统初始化错误");
        }
        // 数组是否扩容
        if (size >= objs.length) {
            System.out.println("动态数组当前已满,已自动扩容....");
            // 产生新数组,长度是原数组的2倍
            Object[] newArray = new Object[objs.length * 2];
            // 将原数组的数据复制到新数组中
            for (int i = 0; i < objs.length; i++) {
                newArray[i] = objs[i];
            }
​
            objs = newArray;
        }
        // 调用测量工具,没出这个o的数值
        double value = this.measurable.measure(o);
​
        if (size == 0) {
            max = o;
            min = o;
        } else {
            double maxValue = this.measurable.measure(max);
            double minValue = this.measurable.measure(min);
            if (value > maxValue) {
                max = o;
            }
            if (value < minValue) {
                min = o;
            }
        }
        sum += value;
        objs[size] = o; // 保存测量过的数据
        size++; // 计数器+1
​
    }
​
    public int getSize() {
        return size;
    }
​
    public Object getMax() {
        return max;
    }
​
    public Object getMin() {
        return min;
    }
​
    public double getAvg() {
        return this.sum / this.size;
    }
​
    public double getSum() {
        return sum;
    }
​
    public Measurable getMeasurable() {
        
        return measurable;
    }
​
    public Object[] getObjs() {
        return objs;
    }
​
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值