仲少_帆 2011-06-03 15:55
浏览 222
已采纳

输入输出流的题 大家看下有没有好的思路啊!!

某单位将要组织一次旅游,已知各成员及其目的地(见“人员信息.txt”),要求根据人员信息,将各地的成员信息统一列出,以供统筹安排,并将结果输出到文件“人员信息2.txt”中。
注:题中不要求城市,或人员信息的顺序。
//人员信息.txt的内容如下(应为一个单独的文本文件):
赵一,北京
钱二,上海
孙三,南京
李四,北京
周小五,西安
吴天,南京
郑小七,上海
赵八,北京
王心凌,天津
刀郎,北京

例本题的输出应为:
北京
4
刀郎
李四
赵八
赵一

上海
2
钱二
郑小七

南京
2
孙三
吴天

西安
1
周小五

天津
1
王心凌

  • 写回答

2条回答 默认 最新

  • JAVA涨薪基地 2011-06-03 17:45
    关注

    刚在csdn上帮你解决了。

        FileReader fr = new FileReader("d:\\aa.txt");  //读取流
    
        BufferedReader br = new BufferedReader(fr);    //缓冲流
    
        FileWriter fw=new FileWriter("d:\\a2.txt");    //输出流
    
        BufferedWriter bw=new BufferedWriter(fw);       //输出缓冲流
    
        String tempStr = "";
    
        // 定义map  key为城市名  值为list集合  存储所有city
        Map<String, List<String>> cityMap = new HashMap<String, List<String>>();
        while ((tempStr = br.readLine()) != null) {
    
            String[] tmpStrArray = tempStr.split(",");//读一行 把之分解成数组
    
            //取得城市名  并判断是否在map已存在
            if (cityMap.containsKey(tmpStrArray[1])) { //存在的情况
                cityMap.get(tmpStrArray[1]).add(tmpStrArray[0]);
            } else {//不存在的情况
                List<String> cityList = new ArrayList<String>();
                cityList.add(tmpStrArray[0]);
                cityMap.put(tmpStrArray[1], cityList);
            }
        }
        br.close();//关闭流
    
        //************输出操作
    
    
        Set<String> sStr = cityMap.keySet();  //从map中取出城市set集合并遍历
    
        for (Iterator iterator = sStr.iterator(); iterator.hasNext();) {
            String string = (String) iterator.next();
            bw.write(string);
            bw.newLine();
            List<String> cityOutList = cityMap.get(string);
            Integer size=cityOutList.size();  //不是直接输出。必须用Integer包装类来保存
            bw.write(size.toString());
            bw.newLine();
            for (Iterator iterator2 = cityOutList.iterator(); iterator2
                    .hasNext();) {
                String tempStr2 = (String) iterator2.next();
                bw.write(tempStr2);
                bw.newLine();
            }
            bw.newLine();
    
        }
        bw.flush();
        bw.close();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab