首页 > 编程知识 正文

list remove方法,list的remove方法返回值

时间:2023-05-06 07:37:05 阅读:128385 作者:3244

首先,使用了函数式的接口作为滤波器。

remove时需要考虑删除的是存储器移位等问题

removeif就是这样解决的

使用与list元素的个数相同长度的BitSet进行过滤,在对要删除的元素进行过滤的同时,在BitSet的对应位上加上1,使当前未删除的元素的个数notDelNum从0开始循环,在list元素的位图0中

publicbooleanremoveif (复制品? 超过滤器(objects.require nonnull ) )过滤器; //figureoutwhichelementsaretoberemoved//anyexceptionthrownfromthefilterpredicateatthisstage//willleavethecollectionunmmmmmmmed finalintexpectedmodcount=mod count; final int size=this.size; for(intI=0; mod count==expectedmodcountisize; I } { @ suppress warnings (' unchecked ' ) finalelement=(e ) elementdata ) I ); if (过滤器. test (element ) ) removeset.set ) I; 移除计数; }if(modcount!=expectedmodcount (thrownewconcurrentmodificationexception ); //shiftsurvivingelementsleftoverthespacesleftbyremovedelementsfinalbooleananytoremove=remove count 0; 分析移动(if ) finalintnewsize=size-remove count; for(intI=0,j=0; (i size ) ) j newSize; I,j({I=removeset.nextclearbit ) I; 元素数据[ j ]=元素数据[ I ]; }for(intk=newsize; k size; k ({元素数据[ k ]=null; //letgcdoitswork } this.size=new size; 模具计数!=expectedmodcount (thrownewconcurrentmodificationexception ); }模具计数; } return anyToRemove; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。