Java集合与IO流结合实例

1 、键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件。
代码:

public class TreeSetDemo {
    public static void main(String[] args) throws  IOException{
        //创建TreeSet对象,用接口匿名内部类的方式实现Comparator接口
        TreeSet<Student> ts=new TreeSet<Student>(new Comparator<Student>() {
            //重写Comparator接口中的compare()方法
            @Override
            public int compare(Student s1,Student s2) {
            //主要排序条件:总成绩,按从高到低输出
            int num1=s2.sum(s2)-s1.sum(s1);
            //次要排序条件,当总成绩相同时按学生姓名内容比较
            int num2=(num1==0)?s2.getName().length()-s1.getName().length():num1;
               return num2;
            }       
        });
        //键盘录入学生信息
        System.out.println("请输入学生信息:");
        for(int x=1;x<6;x++) {
            Scanner sc=new Scanner(System.in);
            System.out.print("请输入第"+x+"名学生的姓名:");
            String name=sc.nextLine();
            System.out.print("请输入第"+x+"名学生的语文成绩:");
            int chineseScore=sc.nextInt();
            System.out.print("请输入第"+x+"名学生的数学成绩:");
            int mathScore=sc.nextInt();
            System.out.print("请输入第"+x+"名学生的英语成绩:");
            int englishScore=sc.nextInt();
            //将录入的学生信息封装到学生对象里
            Student s=new Student();
            s.setName(name);
            s.setChineseScore(chineseScore);
            s.setMathScore(mathScore);
            s.setEnglishScore(englishScore);
            //把学生对象添加到集合中
            ts.add(s);
        }

        //创建字符缓冲输出流对象
        BufferedWriter bw=new BufferedWriter(new FileWriter("18-1.txt"));
        //遍历
        for(Student s:ts) {
            //利用StringBuffer中的追加功能,将需要输出的信息集合在一起
            StringBuffer sb=new StringBuffer();
            sb.append(s.getName()).append(",").append(s.getChineseScore()).append(",").append(s.getMathScore())
            .append(",").append(s.getEnglishScore()).append(",").append(s.sum(s));
            //将信息写入文本文件中
            bw.write(sb.toString());
            //换行
            bw.newLine();
            //刷新流
            bw.flush();
        }
        //关闭流,释放资源
        bw.close();
    }
}

控制台截图:
Java集合与IO流结合实例
文本文件截图:
Java集合与IO流结合实例

2、已知s.txt文件中有这样的一个字符串:“hcexfgijkamdnoqrzstuvwybpl”
请编写程序读取数据内容,把数据排序后写入ss.txt中。

    public class Paixv {
    public void main(String[] args) throws  FileNotFoundException,IOException{
        //封装字符缓冲输入流对象,读取文本文件中内容
        BufferedReader br=new BufferedReader
                (new FileReader("E:\\西部开源\\作业\\课后练习\\java\\18-2.txt"));

        //创建TreeSet集合对象,并进行选择排序
        TreeSet<Character> ts=new TreeSet<Character>(new Comparator<Character>() {

            @Override
            public int compare(Character o1, Character o2) {
                int num=o1-o2;
                return num;
            }

        });

        //创建字符缓冲输出流对象,并将集合ts中的内容添加到文本文件18-2W中
        BufferedWriter bw=new BufferedWriter
                (new FileWriter("E:\\西部开源\\作业\\课后练习\\java\\18-2W.txt"));

        //一次读取一个字符
        int ch=0;
        while((ch=br.read())!=-1) {
            //将读取到的内容添加到集合ts中
            ts.add((char)ch);
        }

        //遍历集合ts中的元素并写入文本文件18-2W中
        for(Character c:ts) {
            bw.write(c);//写数据
            bw.flush();//刷新流
        }

        //关闭流,释放资源
        br.close();
        bw.close();
    }

}

猜你喜欢

转载自blog.51cto.com/13678728/2119948