日期:2014-05-20  浏览次数:20875 次

java 从txt文件中读取数字 每行有且只有两个数字 存入arraylist里
求助求助!
我有一个txt 文件 文件里每一行只有两个数字
12 14
12 15
13 16
13 29
13 30
等等

要求找出每一行第一个比如是12 他之后的所有第二个数字的集合
比如输出结果为
12:14,15,16
13:16,29,30

请问怎么存到arraylist里面
另外算法要求是在线性时间里完成
txt文件非常之大


------解决方案--------------------
不知道你所谓的“文件非常之大”有多大,而且需要在线性时间完成,不知道多线程可不可以;正常实现可以如下代码:
try {
FileReader fr = new FileReader("C:\\Users\\chenxh\\Desktop\\测试数据.txt");
BufferedReader bf = new BufferedReader(fr);
String str = null;
Map map = new HashMap<String, ArrayList>();
List list = null;
while((str=bf.readLine()) != null){
String[] strs = str.split(" ");
Object obj = map.get(strs[0]);
if(obj == null)
list = new ArrayList();
else
list = (List)obj;
list.add(strs[1]);
map.put(strs[0], list);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
这类读写应该很快的,只不过文件越大可能消耗内存更大些,你可以试试。如果不能实现,需要优化怎么实现,同求解