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
最新推荐文章于 2023-09-27 11:22:37 发布
本文介绍了一个通用的循环数组类的实现,该类支持泛型元素,并提供了添加、获取、清除等基本操作。文章详细展示了如何通过控制写入位置及标记是否已经回绕来管理循环数组内的元素。

2935

被折叠的 条评论
为什么被折叠?



