http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 13459|回复: 4

[C#语言基础] 如何建二维Arraylist,不定长的数组?求助

[复制链接]
发表于 2013-10-11 16:44:52 | 显示全部楼层 |阅读模式
Arraylist tmp=new Arraylist();
Arraylist list=new Arraylist();
for(int i=0;i<20;i++)
{
    tmp.Add(list);
}


for(int i=0;i<200;i++)   ////总共有200个点,判断着二百个点在tmp的20个格子的哪个里
{      if(判断语句)
    {
        ((Arraylist)tmp[j]).add(i);
    }
}


tmp[j]的j是变化的  0---20
而且不是tmp[0].add后,就tmp[0].add另一个
而是tmp[0].add后,有可能没add完所有的0里面的数据就开始tmp[1].add,过一会发现还有0里面的数据就再tmp[0].add
这样做可以吗?为什么出现的数据一开始还对,运行几次就不对了呢?
这就相当于有一批点,坐标知道,还有一个网格,看看这200个点在那个格子里!!!!


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-10-11 17:07:56 | 显示全部楼层
二维的方法就是在你现有的基础上加一个数组进去就行了,如果下例子


ArrayList alst = new ArrayList();

alst.Add(new string[] { "aaaa", "bbbb", "ccccc" });

alst.Add(new int[] { 1, 2, 3, 4, 5, 6 });

alst.Add(new char[] { 'a', 'b' });

string[] t = alst[0] as string[];

int i = (int[]) alst[1];

char c = (char[]) alst[2];
 楼主| 发表于 2013-10-11 17:22:45 | 显示全部楼层
可是你的要加进去的数组是不定长的,不知道有多少个
发表于 2013-10-11 17:28:41 | 显示全部楼层
你看我这的数组那里规定多少个了,不都是不定长的吗?
ArrayList alst = new ArrayList();

alst.Add(new string[] { "aaaa", "bbbb", "ccccc" });

alst.Add(new int[] { 1, 2, 3, 4, 5, 6 });

alst.Add(new char[] { 'a', 'b' });
 楼主| 发表于 2013-10-12 09:48:48 | 显示全部楼层
本帖最后由 nmdiszt 于 2013-10-12 09:52 编辑

wangge.jpg 不是
我的(new int[] { 1, 2, 3, 4, 5, 6 })是不能确定的!!!
下面看我的问题!!!

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 * factorx0 + offsetx0;
                double y1 = y * factory0 + offsety0;

/////////通过x,y得到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号格子的点要加入,所以想问问怎么解决?


而且每个格子中的点数是不定的,有的格子中点多有的格子中点少,还有的点没在格子里               
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-15 16:33

© 2014-2021

快速回复 返回顶部 返回列表