首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用整数迭代非常大的csv文件的有效方法?

使用整数迭代非常大的csv文件的有效方法?
EN

Stack Overflow用户
提问于 2017-12-05 20:35:35
回答 1查看 248关注 0票数 0

输入1:一个包含长整数列表的.csv文件。例如:

代码语言:javascript
复制
1
10
23
2450
12
560
320
705
...

输入2:一个包含整数列表的.csv文件,以及每个整数旁边的空白位置。

代码语言:javascript
复制
5 -
12 - 
15 -
13 -
350 -

输出:从输入1中查找输入2整数大于或等于的整数计数,并将其追加到.csv文件中。

问题是,这涉及DNA测序,而输入1有超过一百万个数据条目。怎样才能有效地解决这个问题?

我的想法是将输入1的所有条目读入一个大数组中,并对其进行排序,但这既效率低下,又需要大量内存。如有任何指导,将不胜感激。

编辑:

输出(与输入2相同的文件):

整数,计数

代码语言:javascript
复制
5 1
12 3
15 3
13 3
350 5 
EN

回答 1

Stack Overflow用户

发布于 2017-12-05 21:05:20

将第二个文件中的数字放入值为零的排序映射中:

代码语言:javascript
复制
TreeMap<Integer, Integer> counts = new TreeMap<>();
for (Integer i : fromFile2) {
  counts.put(i, 0);
}

然后,对于从第一个文件读取的每个数字,将计数增加到该数字:

代码语言:javascript
复制
for (Integer i : fromFile1) {
  counts.headMap(i).replaceAll((k, v) -> v + 1);
}

请注意,第二个循环不需要将整个文件读入内存:您可以一次只读取一个文件。

另外,请注意,headMap(i)返回键严格小于i的条目。假设是i < Integer.MAX_VALUE,您可以简单地将1添加到该值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47662240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档