public class CircularArray<E> {// 一个循环array
private int mNextWriter;
private boolean mHasWrapped;
private int mMaxCount;
Object mList[];
public Circular(int count){
mMaxCount = count;
clear();
}
public void clear(){// 重置list
mNextWriter = 0;
mHasWrapped = false;
mList = new Object[mMaxCount];
}
public void add(E object){// 添加数据到list的结尾
mList[mNextWroter] = object;
++mNextWriter;
if(mNextWriter == mMaxCount){
mNextWriter = 0;
mHasWrapped = true;
}
}
public int count(){
if(mHasWrapped){
return mMaxCount;
}else{
return mNextWriter;
}
}
public E getFree(){// list数据未填充满则返回null,否则返回下一个应该被覆盖的数据
if(!mHasWrapped){
return null;
}else {
return (E)mList[mNextWriter];
}
}
public E get(int index){//获取在index的数据, list数据未满时起始位置为0, 否则起始位置为下一个将被覆盖的位置
if(mHasWrapped){
int wrappedIndex = index + mNextWriter;
if(wrappedIndex >= mMaxCount){
wrappedIndex -= mMaxCount;
}
return (E)mList[wrappedIndex];
}else{
return (E)mList[index];
}
}
}
循环array
猜你喜欢
转载自blog.csdn.net/a90123/article/details/68486122
今日推荐
周排行