📄 freetable.java
字号:
import java.util.ArrayList;
class FreeTable {
private ArrayList FS; //空闲分区表
private static FreeTable instence = null;
private FreeTable() {
FS = new ArrayList();
}
public static synchronized FreeTable getInstence() { //获得空闲分区表实例
if (instence == null)
instence = new FreeTable();
return instence;
}
public TableItem getItem(int i) { //返回第i个结点
return (TableItem) FS.get(i);
}
public TableItem getByStart(int start) {
TableItem temp = null;
for (int i = 0; i < FS.size(); i++) {
TableItem temp2 = (TableItem) FS.get(i);
if (temp2.getStart() == start) {
return temp2;
}
}
return temp;
}
public TableItem getByEnd(int end) {
TableItem temp = null;
for (int i = 0; i < FS.size(); i++) {
TableItem temp2 = (TableItem) FS.get(i);
if (temp2.getStart() + temp2.getSize()-1 == end) {
return temp2;
}
}
return temp;
}
public void add(TableItem item) {
if(FS.size()==0){FS.add(0,item);return;}
int i;
for(i=0;i<FS.size();i++){
TableItem p=(TableItem)FS.get(i);
if(p.getStart()>item.getStart()){
FS.add(i,item);
return;
}
}
FS.add(item);
// Memory.getInstence().huishou(item.getStart(), item.getSize());
} //添加空闲分区
public void removeByStart(TableItem item) {
for (int i = 0; i < FS.size(); i++) {
TableItem temp = (TableItem) FS.get(i);
if (temp.getStart() == item.getStart()) {
FS.remove(i);
// Memory.getInstence().fenpei(temp.getStart(), temp.getSize());
}
}
} //根据开始位置删除分区
public int getBySize(int size) { //根据大小获得最适分区,返回分区开始
int j = -1;
int s = 0;
if (FS.size() > 0) {
for (int i = 0; i < FS.size(); i++) {
if (((TableItem) FS.get(i)).getSize() >= size) {
if (s == 0) {
j = i;
s = ((TableItem) FS.get(i)).getSize();
} else if (((TableItem) FS.get(i)).getSize() < s) {
j = i;
s = ((TableItem) FS.get(i)).getSize();
}
}
}
return j;
} else
return -1;
}
public void clear() {
FS.clear();
}
public int size(){return FS.size();}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -