如何在Java中找到数组中最小和最大的项目数?

时间:2014-01-15 18:40:01

标签: java arrays

我想知道是否有任何方法可以显示存储在array / linkedlist中的最高和最小数量的项目。

public Checkout()
{

   tillQueue = new LinkedList<String>(); 
   currentLen = 0;      
   lengthList = new ArrayList <Integer>();

   mean = 0; 
   r = new Random();
}


public void simulation()
{
    System.out.println("Time" + "\t" + "Rnd" + "\t" + "Queue Status");
    for (int t=2; t<10; t++) //number of time-steps in the simulation.
    {
        rndNumber = r.nextInt(6) +1; // generates random number between 1 and 6.          

        if (rndNumber==4 || rndNumber==2 || rndNumber==6) 
        {            
             // if rndNumber is 4, t is added to a queue.
                tillQueue.add(String.valueOf(t));
                currentLen++;

        }
        else if ((rndNumber==1 || rndNumber==3) && !tillQueue.isEmpty())
        {                              
            tillQueue.remove();
            currentLen--;
           //if rndNumber is either 1 or 3, person is removed from the queue
        }

这就是结果:

  

队列号1

     

队列   

[2]   

[2,3]   

[2,3,4]   

[3,4]   

[3,4]   

[4]   

队列为空   

队列为空   

队列1的平均长度= 1.375   

队列1的最大长度= 0.0   

队列的最小长度1 = 0.0

从输出中可以看出,最高人数是3(2,3,4),最低0(空) 我该如何计算这些值?

3 个答案:

答案 0 :(得分:5)

您可以使用Collections类。

Integer max_number = Collections.max(arrayList);
Integer min_number = Collections.min(arrayList);

请参阅:http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html

答案 1 :(得分:0)

如果您的目的是在更改列表时跟踪列表的长度,则需要计算每一步的成员数。因此,在for循环之外,int count = 0;然后,在循环结束时添加一个条件语句,如果当前长度大于当前最大值,则更新

public void simulation()
{
    System.out.println("Time" + "\t" + "Rnd" + "\t" + "Queue Status");
    int count = 0;
    for (int t=2; t<10; t++) //number of time-steps in the simulation.
    {
        //do all your stuff...

    if (count > tillQueue.size())
    {
        count = tillQueue.size();
    }
}

同样的原则适用于最小值,但我认为在这种情况下它始终为0?

答案 2 :(得分:0)

如果您打算使用lengthList,

在循环或业务逻辑之前,

lengthList.add(tillQueue.size())

在循环或任何业务逻辑期间,在任何添加或删除操作之后,

lengthList.add(tillQueue.size())

执行完成后,正如Sergio建议的那样,

Integer max_number = Collections.max(lengthList);
Integer min_number = Collections.min(lengthList);