我有一个文件格式如下:
USER     ITEMS
A        1
A        2
A        3
A        4
B        1
B        2
B        4
C        10
C        8如何读这个文件,然后得到A=(1+2+3+4)=10, B=(1+2+4)=7, C=(10+8)=18

解决方案 »

  1.   

    每行读取,拆词  A  1拆成A和10
    然后加入TreeMap中  A为键 1为值加下面行的时候,看是否存在键cantainKey(),存在就取出值加上现在的值一直循环到最后一行,这是也完成了计算
      

  2.   


    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.Reader;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Set;
    import java.util.TreeMap;
    public class FileUtil extends BufferedReader{
    private Map<String,Integer> map;
    public FileUtil(Reader in) {
    super(in);
    } public void readToMap(){
    map=new TreeMap<String, Integer>();
    String line=null;
    String user=null;
    Integer items=null;
    try {
    while((line= super.readLine())!=null){
    line=line.trim();
    user=line.substring(0,1);
    try{
    items=Integer.parseInt(line.substring(1,line.length()).trim());
    }catch(NumberFormatException e){
    System.out.println(items+"只能为数字");
    continue;
    }
    if(map.containsKey(user)){
    Integer tempItems=map.get(user)+items;
    map.put(user, tempItems);
    }else{
    map.put(user, items);
    }
    }
    } catch (IOException e) {
    e.printStackTrace();

    }
    public void printMap(){
    Set keys=null;
    Iterator<String> ite=null;
    String key=null;
    Integer value=null;
    if(map!=null&&map.size()!=0){
    keys=map.keySet();
    ite=keys.iterator();
    while(ite.hasNext()){
    key=ite.next();
    value=map.get(key);
    System.out.println(key+":"+value);
    }
    }
    }
    public static void main(String args[]){
    try {
    FileUtil fileUtil=new FileUtil(new FileReader("f:/user.txt"));
    fileUtil.readToMap();
    fileUtil.printMap();
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    }
    }
    }如果你的user就一个字母的话,可以这么实现!
      

  3.   

    user不是一个字母也可以实现吧? Map<String,Integer>
      

  4.   

    我说的意思是读取的每行
    用什么规则来拆分
    user到底是全字母还是什么......
      

  5.   

    user 是STRING 如下:
    "00a16baa-3faa-4385-8398-7bd8735ae32c",
      

  6.   

    另外 ,如果我不排序,还可以这样用麻?
    比如:
    A  1
    B  2
    A  3
    C  1
    A  2
      

  7.   

    每个user都是"00a16baa-3faa-4385-8398-7bd8735ae32c"长度吗?
    你只要把我上面那个程序的拆分规则改下就可以了
    你的规则 你自己最清楚