簡體   English   中英

總結一個具有多種類型的ArrayList

[英]Summing up an ArrayList with multiple types

我在總結我在我的班級Accountant中的班級Treasureroom中制作的ArrayList時遇到了麻煩。 我有一個類型為ValuableArrayList ,您可以在下面的代碼中看到。 我需要能夠總結Accountant類中的所有int元素。

會計

package Accountant;
import java.util.Iterator;
import java.util.Random;

import ValuableFactory.Valuable;
import rw.RWMonitor;
import rw.Treasureroom;

public class Accountant implements Runnable {
    private Treasureroom treasureroom; 
    private static final int MAX_WAIT_TIME = 10000; // 3 seconds
    private static final int MAX_WORK_TIME = 5000; // 2 seconds

    private static final Random random = new Random();
    private int no;
    private RWMonitor monitor;
    private Treasureroom resource;

    public Accountant( int no, RWMonitor monitor, Treasureroom resource ) {
        this.no = no;
        this.monitor = monitor;
        this.resource = resource;
    }

    public void run() {
        while(true) {
            try {
                Thread.sleep(random.nextInt(WAIT_TIME));
            }
            catch (InterruptedException ex) {
            }

            System.out.println("Accountant counts: " + resource);

            monitor.acquireRead();

            //System.out.println("Accountant counted: " + valuable);

            try {
                Thread.sleep(random.nextInt(MAX_WAIT_TIME));
            }
            catch (InterruptedException ex) {
            }

            for (int i = 0; i > resource.)
                System.out.println("Accountant counted: " + resource.getValueRead());

            monitor.releaseRead();

            try {
                Thread.sleep(random.nextInt(WAIT_AGAIN));
            }
            catch (InterruptedException ex) {
                // TODO: handle exception
            }
        }
    }

 //System.out.println("The total sum of TreasureRoom is " + Thread.currentThread().getName());
 //TreasureRoom.releaseRead();

}

藏寶室

package rw;

import java.util.*;
import ValuableFactory.*;

public class Treasureroom {
    ArrayList<Valuable> valuables = new ArrayList<Valuable>();

    public Valuable getValueWriter() {
        return valuables.remove(0);
    }

    public void updateValue(Valuable valuable) {
        valuables.add(valuable);
    }

    public boolean removeValue(Valuable valuable) {
        return valuables.remove(valuable);
    }

    public Valuable getValueReade() {
        for (int i=0; i<valuables.size();i++) {
            return valuables.get(i); 
        }
        return null;
    }
}

有價值的

package ValuableFactory;

public class Valuable implements ValuableFactory {
    private String name;
    private int value;

    public Valuable(String name, int value) {
        this.name = name; 
        this.value = value; 
    }

    @Override
    public String getName() {
        return name;
    }

    @Override
    public int getValue() {
        return value;
    }
}

您的Accountant類在其構造函數中實例化您的Treasureroom對象,這意味着要使用Accountant對象循環遍歷Treasureroom對象內的ArrayList ,您需要Accountant中的一個方法調用Treasureroom中的一個方法。

會計

public int getTreasureSum()
{
    return resource.sumTreasure();
}

藏寶室

public int sumTreasure()
{
    int sum = 0;

        for(int i = 0; i < valuables.size(); i++)
        {
            sum+= valuables.get(i).getValue();
        }

    return sum;
}

同樣在您的Accountant類中,您有一個未使用的Treasureroom對象

private Treasureroom treasureroom; 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM