当前位置:编程学习 > C#/ASP.NET >>

求助,如何建二维Arraylist,不定长的数组?


ArrayList tmp = new ArrayList();           

            for (int j = 0; j < (ix + 1) * (jy + 1); j++)  
            ////这里ix是x方向格子数0--ix,jy是y方向格子数0--jy,
///////ix,jy是通过(maxx,minx,maxy,miny是格子的范围坐标,以radius为边长做格子)得到的
            {
                ArrayList listxy = new ArrayList();
               tmp.Add(listxy);           
            }
                       
            for (uint i = 0; i < 200; i++)
            {
                double x1 = x[i] * factorx0 + offsetx0;
                double y1 = y[i] * factory0 + offsety0;

/////////通过x[i],y[i]得到x1,y1(大地坐标)

                if ((x1 >= minx) && (x1 <= maxx) && (y1 >= miny) && (y1 <= maxy))
/////这个判断是x1,y1在不在格子里
                {                   
//////maxx,minx,maxy,miny是格子的范围坐标,以radius为边长做格子
                  int xx = Convert.ToInt32((x1 - minx) / radius);
                  int yy = Convert.ToInt32((y1 - miny) / radius);
/////得到的xx,yy是x方向,y方向的方格的位置
                 ((ArrayList)tmp[xx * (jy + 1) + yy]).Add(i);
////////确定x1,y1在[xx * (jy + 1) + yy]这个格子里,在这个格子里把i加入
                }
          }


现在的问题是:

 ((ArrayList)tmp[xx * (jy + 1) + yy]).Add(i);
因为第i个点得到的格子位置是随意的,不一定在格子的哪个位置,有可能在确定0号格子几个点后,就要确定第11号格子的点,然后又有0号格子的点要加入,所以想问问怎么解决?


而且每个格子中的点数是不定的,有的格子中点多有的格子中点少,还有的点没在格子里   --------------------编程问答-------------------- 这个问题我理解了
就是
((ArrayList)tmp[xx * (jy + 1) + yy]).Add(i);
是不对的,要add一个ArrayList,来完成整个过程
由于不只是200个点,你知道,地形一共要有无数个点,这样,要是加ArrayList,每个方格遍历一回,算法就太落后了
怎么解决呢? --------------------编程问答-------------------- 这个问题是用什么方法解决好呢? --------------------编程问答-------------------- 问大侠该问题使用什么算法解决? --------------------编程问答-------------------- 直接用DataTable不行吗 --------------------编程问答-------------------- 不要一开始就说自己的想法啊,看半天不知道你要干啥啊。

泛型
List<T>   能解决不? --------------------编程问答-------------------- 果断用List<List<int>>
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,