假设我有一个点类,myPoint,有一个字段为int N,表示这个点在哪一条直线上!现在我有一个ArrayList,假设为PointList,里面是myPoint的对象!我想实现一个方法,把这个PointList中N相同的点分别存放在另外的ArrayList中,N有多少个不同的值就新建多少个ArrayList!该怎么实现!谢谢各位DAXIA了!

解决方案 »

  1.   

    个人感觉存放到另外一个ArrayList中,使用contains方法是可以实现的,一个更简单的方式是使用Hashtable,比较快速,通过Hashtable中key的个数,可以确定有多少个N,再动态申请一个ArrayList的数组就可以了。不过这个方法只是我的初步设想,估计可以有优化的地方。
      

  2.   

    用HashMap吧, N 当面做为key, myPoint对象当做value.
      

  3.   

    public ArrayList getLines(ArrayList pointList)
    {
        if(pointList == null)
    return new ArrayList();
    if(pointList.isEmpty())
    return new ArrayList();
    HashSet hs = new HashSet();
    for(int i=0;i<pointList.size();i++)
    {
    (myPoint)mp = pointList.get(i);
    boolean found = false;
    Iterator it = hs.iterator();
    while(it.hasNext())
    {
    (Integer)myn = it.next();
    if(myn.intValue() == mp.N)
    {
    found = true;
    break;
    }
    }
    if(!found)
    hs.add(new Integer(mp.N));
    }
    return new ArrayList(hs);
    }
      

  4.   

    回复人: lei198203(lei) ( ) 信誉:100  2005-08-08 11:22:00  得分: 0  
     
     
       用HashMap吧, N 当面做为key, myPoint对象当做value.
                    ~~~~~~~~~~~~~    
     
    ---------------------------------------------------------------------------
    楼上的兄弟,N能当key么?
    若new Integer(N),仍然不能当key呀,因为每次都要new 新的。
    我的方法比较笨啦,如需优化,请跟贴。
    (N的数目如果比较大,只是可以用二分查找法,提高效率)
      

  5.   

    又见 aico(aico)兄!真是感谢啊!