📄 arraybag.java
字号:
package jss.bag;
import java.util.Iterator;
import java.util.NoSuchElementException;
import java.util.Random;
public class ArrayBag implements BagADT {
private static Random rand = new Random();
private final int DEFAULT_CAPACITY = 100;
private final int NOT_FOUND = -1;
private int count;
private Object[] contents;
public Bingo myBingo;
public ArrayBag() {
count = 0;
contents = new Object[DEFAULT_CAPACITY];
}
public ArrayBag(int initialCapacity) {
count = 0;
contents = new Object[initialCapacity];
}
public void add(Object element) {
if (size() == contents.length)
expandCapacity();
contents[count] = element;
count++;
}
private void expandCapacity() {
Object[] larger = new Object[contents.length * 2];
for (int index = 0; index < contents.length; index++) {
larger[index] = contents[index];
}
contents = larger;
}
public void addAll(BagADT bag) {
Iterator scan = bag.iterator();
while (scan.hasNext())
add(scan.next());
}
public Object removeRandom() {
int choice = rand.nextInt(count);
Object result = contents[choice];
contents[choice] = contents[count - 1];
contents[count - 1] = null;
count--;
return result;
}
public Object remove(Object target) throws NoSuchElementException {
int search = NOT_FOUND;
for (int index = 0; index < count && search == NOT_FOUND; index++)
if (contents[index].equals(target))
search = index;
if (search == NOT_FOUND) {
throw new NoSuchElementException();
}
Object result = contents[search];
contents[search] = contents[count - 1];
contents[count - 1] = null;
count--;
return result;
}
public BagADT union(BagADT bag) {
ArrayBag both = new ArrayBag();
for (int index = 0; index < count; index++)
both.add(contents[index]);
Iterator scan = bag.iterator();
while (scan.hasNext())
both.add(scan.next());
return both;
}
public boolean contains(Object target) {
int search = NOT_FOUND;
for (int index = 0; index < count && search == NOT_FOUND; index++)
if (contents[index].equals(target))
search = index;
return (search != NOT_FOUND);
}
public boolean equals(BagADT bag) {
boolean result=false;
ArrayBag temp1=new ArrayBag();
ArrayBag temp2=new ArrayBag();
Object obj;
if(size()==bag.size()){
temp1.addAll(this);
temp2.addAll(bag);
Iterator scan=bag.iterator();
while(scan.hasNext()){
obj=scan.next();
if(temp1.contains(obj)){
temp1.remove(obj);
temp2.remove(obj);
}
}
result=(temp1.isEmpty()&&temp2.isEmpty());
}
return result;
}
public boolean isEmpty() {
return (count == 0);
}
public int size() {
return count;
}
public Iterator iterator() {
return new ArrayIterator(contents,count);
}
public String toString() {
String result="";
for(int index=0;index<count;index++)
result=result+contents[index].toString()+"\n";
return result;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -