正在检索数组列表中的最后一个对象?JAVA
我有一个ArrayList,bag,它存储Bean类型的对象,一个包含Bean颜色的类,存储在布尔值中。如果我想取回袋子里的最后一个豆子来检查它是什么颜色,我该怎么做正在检索数组列表中的最后一个对象?JAVA,java,arraylist,Java,Arraylist,我有一个ArrayList,bag,它存储Bean类型的对象,一个包含Bean颜色的类,存储在布尔值中。如果我想取回袋子里的最后一个豆子来检查它是什么颜色,我该怎么做 if (((Bean)bag.get(bag.size())).getColor() == true) blackCounter++; else whiteCounter++; 在这里,我试图检查包中的最后一个豆子是黑色还是白色,然后添加到一个计数器中,该计数器存储当前包中每种颜色豆子的总数。然而,每次运行索引1时,
if (((Bean)bag.get(bag.size())).getColor() == true)
blackCounter++;
else
whiteCounter++;
在这里,我试图检查包中的最后一个豆子是黑色还是白色,然后添加到一个计数器中,该计数器存储当前包中每种颜色豆子的总数。然而,每次运行索引1时,我都会得到一个OutOfBounds异常。我怎样才能解决这个问题?(注:本周我们刚在CS课上学习了ArrayList,所以我对这个概念还不是100%,尽管我想我已经开始掌握了。)
编辑:此包的大小变化很大,有时为0。然而,BlueJ说,当大小为1时,我会得到错误,我试图访问的索引也是如此
原来的问题解决了。后续问题:当我运行程序时,一切都会正常,但它有时会给我一个越界异常,下面的代码段也是如此,而且由于程序必须为我的任务执行50次不同的时间,这是有问题的
while (bag.size() > 1)
{
int grab1 = rn.nextInt(bag.size());
int grab2 = rn.nextInt(bag.size());
boolean place1 = bag.get(grab1).getColor();
boolean place2 = bag.get(grab2).getColor();
if (place1 && place2)
{
bag.remove(grab2);
}
if (place1 && !place2)
{
bag.remove(grab1);
}
if (!place1 && place2)
{
bag.remove(grab2);
}
if(!place1 && !place2)
{
bag.remove(grab1);
bag.remove(grab2); //This line will give me an Out of Bounds Exception when the size and the index are the same
bag.add(new Bean());
}
}
我也尝试在这里添加-1,但它偶尔会给我索引-1的越界异常情况。试试这个:
public Bean getLastElement(List<Bean> myList) {
return myList.get(myList.size() - 1);
}
公共Bean getLastElement(列表myList){
返回myList.get(myList.size()-1);
}
试试这个:
public Bean getLastElement(List<Bean> myList) {
return myList.get(myList.size() - 1);
}
公共Bean getLastElement(列表myList){
返回myList.get(myList.size()-1);
}
索引计数从0开始,因此如果array.size()返回5,则4是最后一项
((Bean)bag.get(bag.size()-1))
索引计数从0开始,因此如果array.size()返回5,则4是最后一项
((Bean)bag.get(bag.size()-1))
集合具有基于0的索引,因此最后一个元素是
size-1
。当集合为空时,您需要添加一个保护。集合具有基于0的索引,因此最后一个元素是size-1
。当集合为空时,您需要添加一个保护。您需要调用getSize()-1
,因为列表是0索引的
例如,5个大小的列表中的第一个索引是0
,最后一个索引是4
在尝试此操作之前,还应通过调用isEmpty()
检查列表是否为空
示例
// assuming getColor weirdly returns boolean
if (bag != null && !bag.isEmpty() && ((Bean)bag.get(bag.size() - 1)).getColor()) {
blackCounter++;
}
else {
whiteCounter++;
}
您需要调用getSize()-1
,因为列表的索引为0
例如,5个大小的列表中的第一个索引是0
,最后一个索引是4
在尝试此操作之前,还应通过调用isEmpty()
检查列表是否为空
示例
// assuming getColor weirdly returns boolean
if (bag != null && !bag.isEmpty() && ((Bean)bag.get(bag.size() - 1)).getColor()) {
blackCounter++;
}
else {
whiteCounter++;
}
您能提供完整的代码段而不仅仅是条件吗?提示:大小为N的数组的第一个索引是什么?最后一个索引是什么?能否提供整个代码段而不仅仅是条件索引?提示:大小为N的数组的第一个索引是什么?最后一个索引是什么?