大数据量的列表用什么数据结构适合???

askquestion_003 2012-03-13 07:03:44
有2万组数据,每组数据包括三项,两项为char(20),一项为int型,并且这2万项数据是具有先后顺序的
且每网这里面增加一组数据,就需要把旧的第一组数据删除掉

请问我应该用什么样的数据结构好些?
1.把这三项数据构成一个类,还是直接Object[3] ?
2.用List还是Map或其它?
...全文
431 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ArayChou 2012-03-14
  • 打赏
  • 举报
回复
如果是实际工作,直接把数据放在数据库里,使用SQL语句得到想要的结果即可.没有必要自己实现.

而且,如果自己不是很牛,也容易出问题.

学习研究除外
MiceRice 2012-03-14
  • 打赏
  • 举报
回复
◎用Oject[]数组好还是类定义3个属性好?两项为char(20),一项为int型
从性能上来说没啥差异,从规范化来说还是定义成类属性好。


◎更新频率大概在5-10分钟之间
其实访问量更重要,如果你每5~10分钟就要从数据库中将10W行全部重新装载一次,然后在这期间只需要依次遍历一次就够,那当然就显得多此一举了。
askquestion_003 2012-03-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ldh911 的回复:]
“其它要求:需要依次遍历2万组数据”
依次遍历的话,LinkedList就能解决了,当然ArrayList也能很好解决,甚至数组都能很好解决。


“2万条的list大概要占多少内存”
2W条本身倒不算多,但还要看你每行多大,这个自己完全可以估算出来,比如你每行是1K大小,那么2W×1K总共大概就20MB的空间,而32bit的JVM大约可以配置1.5GB内存,所以20MB大小基本上完全不……
[/Quote]
另外:
1.用Oject[]数组好还是类定义3个属性好?两项为char(20),一项为int型
2.更新频率大概在5-10分钟之间
京郊-金手指 2012-03-14
  • 打赏
  • 举报
回复

[Quote=引用 7 楼 ldh911 的回复:]
“其它要求:需要依次遍历2万组数据”
依次遍历的话,LinkedList就能解决了,当然ArrayList也能很好解决,甚至数组都能很好解决。


“2万条的list大概要占多少内存”
2W条本身倒不算多,但还要看你每行多大,这个自己完全可以估算出来,比如你每行是1K大小,那么2W×1K总共大概就20MB的空间,而32bit的JVM大约可以配置1.5GB内存,所以20MB大小基本上完全不……
[/Quote]
MiceRice 2012-03-14
  • 打赏
  • 举报
回复
“其它要求:需要依次遍历2万组数据”
依次遍历的话,LinkedList就能解决了,当然ArrayList也能很好解决,甚至数组都能很好解决。


“2万条的list大概要占多少内存”
2W条本身倒不算多,但还要看你每行多大,这个自己完全可以估算出来,比如你每行是1K大小,那么2W×1K总共大概就20MB的空间,而32bit的JVM大约可以配置1.5GB内存,所以20MB大小基本上完全不够看。


“会不会得不偿失”
从你目前介绍的信息,无法得出判断,要根据使用场景、访问频度、更新频度等才能判断。
askquestion_003 2012-03-13
  • 打赏
  • 举报
回复
这2万条记录是从数据库查出来,打算存在list里并将其缓存起来,2万条的list大概要占多少内存?这么做会不会得不偿失
Cactus_hxk 2012-03-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ldh911 的回复:]
引用楼主 askquestion_003 的回复:
且每网这里面增加一组数据,就需要把旧的第一组数据删除掉


看起来是个循环队列。

你还有其它什么要求么?比如迅速用下标定位某个元素?

如果没有快速定位要求,建议用 LinkedList,如果有,建议用 ArrayList 模拟循环队列。
[/Quote]
askquestion_003 2012-03-13
  • 打赏
  • 举报
回复
其它要求:需要依次遍历2万组数据
Hunter_1 2012-03-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ldh911 的回复:]
引用楼主 askquestion_003 的回复:
且每网这里面增加一组数据,就需要把旧的第一组数据删除掉


看起来是个循环队列。

你还有其它什么要求么?比如迅速用下标定位某个元素?

如果没有快速定位要求,建议用 LinkedList,如果有,建议用 ArrayList 模拟循环队列。
[/Quote]
MiceRice 2012-03-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 askquestion_003 的回复:]
且每网这里面增加一组数据,就需要把旧的第一组数据删除掉
[/Quote]

看起来是个循环队列。

你还有其它什么要求么?比如迅速用下标定位某个元素?

如果没有快速定位要求,建议用 LinkedList,如果有,建议用 ArrayList 模拟循环队列。
看那边 2012-03-13
  • 打赏
  • 举报
回复
封装成object。放入list。
为嘛不存入数据库?
程序 = 数据结构 + 算法  程序是为了解决实际问题而存在的。然而为了解决问题,必定会使用到某些数据结构以及设计一个解决这种数据结构的算法。如果说各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功。编程实战算法,不是念PPT,我们讲的就是实战与代码实现与企业应用。程序 = 数据结构 + 算法                ——图灵奖得主,计算机科学家N.Wirth(沃斯)作为程序员,我们做机器学习也好,做python开发也好,java开发也好。有一种对所有程序员无一例外的刚需 —— 算法与数据结构日常增删改查 + 粘贴复制 + 搜索引擎可以实现很多东西。同样,这样也是没有任何竞争力的。我们只可以粘贴复制相似度极高的功能,稍复杂的逻辑没有任何办法。语言有很多,开发框架更是日新月异3个月不学就落后我们可以学习很多语言,很多框架,但招聘不会考你用5种语言10种框架实现同一个功能。真正让程序员有区分度,企业招聘万年不变的重点 —— 算法与数据结构。算法代表程序员水平的珠穆朗玛。如果说各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功。 想写出精炼、优秀的代码,不通过不断的锤炼,是很难做到的。 开这个系列的目的是为了自我不断积累。不积跬步无以至千里嘛。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧