1

我有一个包含值的字符串:

12345    5
54321    4
98765    10

第一个值是一个数字,第二个值是一个计数。字符串值是通过这段代码获得的:

for(ClusterListBean bean : clusterList) {
    line += bean.getMSISDN()+"\t"+bean.getRewardCount()+"\n";               
}

现在我正在读取一个内容相同但计数值不同的文件。

这是通过以下方式完成的:

BufferedReader ln = FileCreatorUtil.readFile(configFileUtil.prevFile().getFileDir()+prevFile.clusterPrevFile().getFileName());

现在我想做的是搜索一个数值,得到与之配对的计数,然后减去计数。例子:

BufferedReader ln 内容:

12345    5
54321    4
98765    10

字符串行内容:

12345    7
54321    9
98765    15

输出应该是:

12345    2
54321    5
98765    5
4

2 回答 2

3

将您的数据放入以HashMapMSISDN 为关键、计数为价值的地方。读取第二个文件查阅该地图并减去该值。

于 2012-07-20T12:04:56.220 回答
1

你为什么不把你的“字符串”放在哈希图中?

Map<String,Integer> map = new HashMap<String,Integer>();
for(ClusterListBean bean : clusterList) {
    map.put(bean.getMSISDN(),bean.getRewardCount());               
}

然后阅读您的文件:

BufferedRead ln = null;
try{
    ln = new BufferedReader(new FileReader(configFileUtil.prevFile().getFileDir()+prevFile.clusterPrevFile().getFileName()));
    String line;
    while((line=br.readLine())!=null){
        String[] linesplit = line.split("\\t");
        if (map.containsKey(linesplit[0])){
             //do whatever you need with something like:
             System.out.println(map.get(linesplit[0])-Integer.parseInt(linesplit[1]));
        }
    }
    ln.close();
}catch(IOException e){
     e.printStackTrace();
}
于 2012-07-20T12:11:05.037 回答