| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1803 人关注过本帖
标题:问个java读文件的问题,如何高速检索文件内容?
只看楼主 加入收藏
acera002
Rank: 1
等 级:新手上路
帖 子:6
专家分:5
注 册:2009-10-29
结帖率:50%
收藏
已结贴  问题点数:2 回复次数:2 
问个java读文件的问题,如何高速检索文件内容?
一个csv文件,只有两列,一列是name,一列是value。这样的name value大概有4000对。
现在想用name检索value,原本打算把4000对都予读出来,放到hashmap里,但是导致了内容溢出。
请问,还有什么办法能够实现高速的上述查找吗?
搜索更多相关主题的帖子: 检索 文件 java 
2009-11-10 21:58
baifenghan
Rank: 8Rank: 8
等 级:贵宾
威 望:10
帖 子:258
专家分:952
注 册:2006-3-17
收藏
得分:2 
package test;

import java.util.HashMap;
import java.util.Map;
import *;

public class MountDataProcess {

    public static Map<String, String>[]  getBigDatas(String  fileName) {
        BufferedReader br = null;
        int rowNumber = 0;     //用于统计文件的行数,也就是记录的个数
        try {
            br = new BufferedReader(new InputStreamReader(new FileInputStream(fileName)));
            while(br.readLine() != null){
                rowNumber++;
            }
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        
        //类似于在web中经常做的分页,可以分批保存处理。
        Map<String, String>[] mapArray = new HashMap[10];
        //对数组初始化
        for (Map<String, String> map : mapArray) {
            map = new HashMap<String, String>();
        }
        
        for (int i = 0; i < rowNumber; i++) {
            String str = null;
            try {
                str = br.readLine();  //从文件中读出一行数据,也就是一条记录
            } catch (IOException e) {
                e.printStackTrace();
            }
            String[] s = str.split(" ");//这里假设你的列之间是用空格分割的
            for (int j = 1; j < 11; j++) {
                if(i > rowNumber/10*j && i > rowNumber/10*(j+1)){
                    mapArray[j - 1].put(s[0], s[1]);
                }
            }
        }
        
        return mapArray;
        
    }

}


上面是我临时写的一个方法,可以尝试,自己先编译看有错误没,我这里没有那么多的数据。

思路很简单:
模仿在页面分页时候的算法,建立一个Map的数组,然后将数据分批保存进不同的Map中就可以了。
2009-11-11 04:10
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
收藏
得分:0 
把文件资料插入到数据库中,再从数据库中查找,这样比较快些

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2009-11-11 08:41
快速回复:问个java读文件的问题,如何高速检索文件内容?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012343 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved