案例:
private StatInfo find(Integer id,String exam_name,String title,List<StatInfo> datas){
int find=-1;
for (int i = 0; i < datas.size(); i++) {
StatInfo s=datas.get(i);
int exam_id=s.getExam_id();
String titlename=s.getAgegroup();
if (exam_id==id && titlename.equals(title)) {
find=i;
break;
}
}
return find<0?null:datas.remove(find);
}
调用这个方法
StatInfo data=find(e.getId(),e.getName(), title, rowdata);可以直接返回一个实体类
实际上,在ArrayList中的remove有两种方法,一种返回值是布尔,一种返回值是对象
public E remove(int index); //执行删除指定位置的元素的功能
public boolean remove(Object o) //执行删除指定元素的功能
关于ArrayList的remove的两个方法的源码:
// 删除ArrayList指定位置的元素
public E remove(int index) {
RangeCheck(index);//检查index是否超出list大小范围,否则抛出异常
modCount++;
E oldValue = (E) elementData[index];//elementData是实现list的数组
int numMoved = size - index - 1;//当执行删除操作是后面的元素全部向前面移动一位
if (numMoved > 0)
System.arraycopy(elementData, index+1, elementData, index,
numMoved);
elementData[--size] = null;
return oldValue;
}
// 删除ArrayList的指定元素
public boolean remove(Object o) {
if (o == null) {
for (int index = 0; index < size; index++)
if (elementData[index] == null) {
fastRemove(index);
return true;
}
} else {
for (int index = 0; index < size; index++)
if (o.equals(elementData[index])) {
fastRemove(index);
return true;
}
}
return false;
}