揹包的APIjava
void add()數組
int size()dom
boolean isEmpty()ide
揹包的遍歷用Iterator函數
代碼、spa
1 package gh; 2 3 import java.util.Iterator; 4 /** 5 * 隨機揹包 6 * @author ganhang 7 * 8 * @param <T> 9 */ 10 public class RandomBag<T>implements Iterable<T> { 11 private int n;//元素數量 12 private T [] bag; 13 public RandomBag(int max){ 14 bag=(T[])new Object[max]; 15 } 16 public boolean isEmpty(){ 17 return n==0; 18 } 19 20 public int size(){ 21 return n; 22 } 23 public void add(T item){ 24 bag[n++]=item; 25 } 26 27 @Override 28 public Iterator<T> iterator() { 29 // TODO Auto-generated method stub 30 return new RandomBagIterator(); 31 } 32 private class RandomBagIterator implements Iterator<T>{ 33 public RandomBagIterator(){ 34 shuffle(bag);//構造函數中隨機排列下數組中的元素 35 } 36 private void shuffle(T b[]){//數組的隨機排序 37 int N=b.length; 38 for(int i=0;i<N;i++){ 39 int r=i+(int)(Math.random()*(N-i)); 40 T temp=b[i]; 41 b[i]=b[r]; 42 b[r]=temp; 43 } 44 } 45 @Override 46 public boolean hasNext() { 47 // TODO Auto-generated method stub 48 return n!=0; 49 } 50 51 @Override 52 public T next() { 53 // TODO Auto-generated method stub 54 return bag[--n]; 55 } 56 57 @Override 58 public void remove() { 59 // TODO Auto-generated method stub 60 61 } 62 63 } 64 65 }