在Java中存储15000项的数组
我有一份有15000个项目的文件。每个项目包含6个变量(字符串和整数)。我必须将所有这些复制到某种二维数组中,最好的方法是什么
以下是我目前的想法:
Make a GIANT 2D array or array list the same way you make any other array.
优点:简单缺点:凌乱(将为此创建一个类),大量代码,如果我犯了错误,将无法找到它所在的位置,所有变量都必须是字符串,甚至是整数,这将使我的工作更加困难
Make a new class with a super that takes in all the variables I need.
Create each item as a new instance of this class.
Add all of the instances to a 2D array or array list.
优点:简单,不太混乱,更容易发现错误,并非所有变量都需要是字符串,这使得以后不必将字符串转换为int时更容易,对我来说输入更少一些缺点:更慢?实例会使我的数组编译变慢吗?当我搜索数组中的项目时,它们会使整个数组变慢吗
这些想法似乎并不都很好:(在我开始三周、每天五小时的添加这些项目的过程之前,我想找到最好的方法,这样我就不用再做了……对我当前想法或任何新想法的建议
数据示例:
0: 100, west, sports, 10.89, MA, united
*非实际数据
# 1 楼答案
你的第二个选择似乎不错。您可以创建一个包含所有项的类,并创建该类的数组
您可以使用以下选项: 1.使用缓冲读取器读取文档,以便不会出现内存问题。 2.创建一个包含项目的类。 3.创建所需类型的列表,并将元素存储到其中
如果你面临进一步的问题,请告诉我
# 2 楼答案
如果您已经有了包含15000*6项的文档,根据我的经验,您最好编写一个程序来使用regex并对其进行解析,并以您想要的格式将输出作为java数组的内容。有了这样一个解析程序,如果您想以不同的方式生成15000行,那么您也可以很容易地更改其格式
至于最后的格式,我会有一个你bean的ArrayList。到目前为止,您不一定需要接受变量的super,除非您需要有不同的子类型
您可能会在单个类中用完静态空间。所以我要做的是将一个像这样的大类分解成一个文件,其中包含一堆内部嵌套的类,每个类都有64K(或更少)的数据部分作为静态最终数组,然后我将它们合并到该文件的主类中
我在一个有很多名字的类中有这样的问题需要解决:
# 3 楼答案
如果您还没有创建包装(项目)(因为您的问题没有明确说明)
如果元素的大小是固定的,请使用array other wise使用LinkedList(编写自己的链接列表或使用集合)
如果您需要在此项集合上支持其他操作,可能需要进一步插入、搜索(尤其是)使用平衡二进制搜索树
理解了这个问题,我想说链表是更好的选择
# 4 楼答案
如果项目具有唯一属性(名称、id、行号或任何其他唯一标识符),我建议使用带有项目包装的HashMap。如果要对数据执行任何类型的查找(查找id为x的项和执行操作y),这是最快的选项,而且非常干净,它只需要一个包装器,您可以使用已经实现的数据结构
如果您不进行任何查找,并且不需要按特定顺序处理所有项,我建议使用ArrayList,它是非常优化的,因为它是java中最常用的集合。您仍然需要包装器来保持整洁,而且列表比数组干净得多,几乎不需要额外的成本
创建自己的集合没有什么意义,因为您的需求不是非常具体,只需使用一个已经实现的集合,不要担心代码会被破坏,如果是oracles的错误;)