我想知道是否有任何方法可以显示存储在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(空) 我该如何计算这些值?
答案 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);