Ajuda em uma questão de repetição

Fala galera, sou iniciante na área. Tenho uma questão pra fazer que é o seguinte: fazer um programa que leia 10.000 diagonais de paralelepípedos para saber em que esfera cada caixa se adequa. São 4 esferas de diâmetros 10cm, 15cm, 20cm e 25cm , até a parte de calcular os diâmetros tudo ok, mas não consigo fazer com que faça essa “contagem” de quantas esferas de cada tipo serão utilizadas. alguma ajuda?

caso não tenha ficado claro, aqui vai o comando:
Um distribuidor de brinquedos fez um acordo de compra de 10.000 brinquedos pequenos embalados em caixas de formato retangular de tamanho variados. Ele pretende reembalar estas caixas em esferas coloridas de plástico e revende-las como pacotes surpresas. As esferas são fornecidas com quatro diâmetros diferentes: 10, 15, 20 e 25 cm. Para pedir as esferas, ele precisa saber quantas de cada diâmetro ele necessita. Sabendo que a diagonal de uma caixa retangular com dimensões A, B e C, dadas por D= raiz(A²+b²+c²) é sua maior medida, o distribuídos deve calcular os comprimentos das diagonais das caixas e determinar o número de caixa com diagonal igual ou menor do que 10 cm , maior que 10 , menor ou igual a 15 e assim por diante. As dimensões de cada caixa são lidas. Preparar um aplicativo para ler os dados e determinar o número de esferas para cada tamanho necessárias para reembalar os brinquedos.

Bom dia amigo.

Não sei se isso que precisa mas…:

public static void main(String[] args) {
    Test test = new Test();
    List<Double> cr = test.getCaixasRedondas(test.new Caixa(10, 20, 30), test.new Caixa(10, 20, 30), test.new Caixa(10, 20, 30));
    cr.stream().forEach(c -> System.out.println(c));
}

public List<Double> getCaixasRedondas(Caixa... caixas) {
    int[] diametros = {10, 15, 20, 25};
    List<Double> lista = new ArrayList();
    for (Caixa c : caixas) {
        for (double d : diametros) {
            if (d == c.getD()) {
                lista.add(d);
            }
        }
    }
    return lista;
}

public class Caixa {

    private double a = 0d;
    private double b = 0d;
    private double c = 0d;
    private double d = 0d;

    public Caixa() {
    }

    public Caixa(double a, double b, double c) {
        this.a = a;
        this.b = b;
        this.c = c;
    }

   //Getters and Setters

    public double getD() {
        if (d == 0d) {
            d = calculaD();
        }
        return d;
    }

    private double calculaD() {
        double resultado = Math.sqrt(Math.pow(a, 2d) + Math.pow(b, 2d) + Math.pow(c, 2d));
        return resultado;
    }

}