我写了个集合类,用数组存放集合元素。可不知怎么写输出集合元素的方法,请各位帮下忙,谢谢!别的地方需要改进的也不妨说说。程序代码如下
public class SetTest
{
    public static void main(String[] args)
    {
// TODO 自动生成方法存根
IntSet set1 = new IntSet();
IntSet set2 = new IntSet();
set1.add((int)Double.parseDouble(new DecimalFormat("##.00").format(Math.random())));
set1.add((int)Double.parseDouble(new DecimalFormat("##.00").format(Math.random())));
set1.add((int)Double.parseDouble(new DecimalFormat("##.00").format(Math.random())));
set1.add((int)Double.parseDouble(new DecimalFormat("##.00").format(Math.random())));
set1.add((int)Double.parseDouble(new DecimalFormat("##.00").format(Math.random())));
set1.add((int)Double.parseDouble(new DecimalFormat("##.00").format(Math.random())));
set1.add((int)Double.parseDouble(new DecimalFormat("##.00").format(Math.random())));
set1.add((int)Double.parseDouble(new DecimalFormat("##.00").format(Math.random())));
set2.add((int)Double.parseDouble(new DecimalFormat("##.00").format(Math.random())));
set2.add((int)Double.parseDouble(new DecimalFormat("##.00").format(Math.random())));
set2.add((int)Double.parseDouble(new DecimalFormat("##.00").format(Math.random())));
set2.add((int)Double.parseDouble(new DecimalFormat("##.00").format(Math.random())));
set2.add((int)Double.parseDouble(new DecimalFormat("##.00").format(Math.random())));
System.out.println(set1.size());
System.out.println(set2.size());
    }
}
class IntSet implements Cloneable
{
    int [] data;
    int manyItems;
    public IntSet()
    {
 final int INITIAL_CAPACITY = 10;
         manyItems = 0;
         data = new int[INITIAL_CAPACITY];
    }
    public IntSet(int initialCapacity)
    {
 if(initialCapacity < 0)
     throw new IllegalArgumentException
     ("The initialCapacity is negative: " + initialCapacity);
 data = new int[initialCapacity];
         manyItems = 0;
    }
    public void ensureCapacity(int minimumCapacity)    {          
 int[ ] biggerArray;         
 if(data.length < minimumCapacity)         
 {           
     biggerArray = new int[minimumCapacity];          
     System.arraycopy(data, 0, biggerArray, 0, manyItems);            
     data = biggerArray;          
 }      
    }
    public void add(int element)
    {      
if (manyItems == data.length)
        {
     ensureCapacity((manyItems + 1)*2);   
        }    
 data[manyItems] = element;    
 manyItems++;  
    }
    public void addMany(int... elements)             
    {              
 if (manyItems + elements.length > data.length)          
 {  // Ensure twice as much space as we need.                         
     ensureCapacity((manyItems + elements.length)*2);                    
 }            
 System.arraycopy(elements, 0, data, manyItems, elements.length);             
 manyItems += elements.length;                
    }
    public void addAll(IntSet addend)              
    {        
 ensureCapacity(manyItems + addend.manyItems);         
 System.arraycopy(addend.data, 0, data, manyItems, addend.manyItems);                
 manyItems += addend.manyItems;   
    } 
    public IntSet clone( )
    {  // 复制一个 IntArrayBag 对象。           
 IntSet answer;          
 try            
 {        
     answer = (IntSet) super.clone( );         
 }         
 catch (CloneNotSupportedException e)        
 {             
     throw new RuntimeException            
     ("This class does not implement Cloneable");          
 }           
 answer.data = data.clone( );                    
 return answer;          
    }
    public int getCapacity( )         
    {             
return data.length;     
    } 
    public boolean remove(int target)             
    {             
int index;        
for (index = 0; (index < manyItems) && (target != data[index]); index++);         
if (index == manyItems)                     
    return false;            
else            
{  
    manyItems--;          
    data[index] = data[manyItems];          
    return true;       
}         
    }
    public int removeAll (int target)
    {
int i = 0;           
int count = 0;
while (i < manyItems)                   
{            
    if (data[i] == target)
    {       
manyItems--;
data[i] = data[manyItems];    
count++;               
    }         
    else           
i++;  
}
return count;                   
    }
    public int size( )             
    {             
return manyItems;         
    }
    public void trimToSize( )  
    {      
int[ ] trimmedArray;       
if (data.length != manyItems)    
{         
    trimmedArray = new int[manyItems];        
    System.arraycopy(data, 0, trimmedArray, 0, manyItems);       
    data = trimmedArray;      
}             
    }
    public static IntSet union(IntSet s1, IntSet s2)
    {          
IntSet answer = new IntSet(s1.getCapacity( ) + s2.getCapacity( ));         
System.arraycopy(s1.data,0,answer.data,0,s1.manyItems);       
System.arraycopy(s2.data,0,answer.data,s1.manyItems,s2.manyItems);               
answer.manyItems = s1.manyItems + s2.manyItems;         
return answer;                   
    }
    public static IntSet intersection(IntSet s1,IntSet s2)
    {
IntSet answer = new IntSet(s1.getCapacity());
for(int i = 0;i < answer.getCapacity();i++)
{
    if(s1.data[i] == s2.data[i])
    {
answer.data[i] = s1.data[i];
    }
    else
    {
s1.remove(i);
    }
}
return answer;
    }
    public static IntSet difference(IntSet s1,IntSet s2)
    {
IntSet answer = new IntSet(s1.getCapacity() + s2.getCapacity());
for(int i = 0;i < answer.getCapacity();i++)
{
    if(s1.data [i] == s2.data[i])
    {
s1.remove(i);
s2.remove(i);
    }
    else
    {
answer.data[i] = s1.data[i];
answer.data[i+1] = s2.data[i];
    }
}
return answer;
    }
    public void printSet()
    {
    }
}

解决方案 »

  1.   

    在你的集合类中重写toString方法,用来输出每个元素
    代码我慢慢看!!
      

  2.   

    public String toString()
    {
    String str = "";
    for(int i = 0; i < size(); i++)
    {
    str = str + "\n" + i + " : " + data[i];
    }
    return str;
    }
      

  3.   

    然后直接System.out.println(set1);就可以了
    但是你的程序好像在main方法中添加元素每次加的都是0
      

  4.   

    谢谢楼上的几们
    重写toString()方法可以
    刚学没多久,写的时候只是写代码忽略了写注释,不好意思
      

  5.   

    将Math.random()改为Math.random()×100