Java集合/数组排序知识与IO流结合实例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();
    }
}

控制台截图:
技术分享图片
文本文件截图:
技术分享图片

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

public class Paixv {
    public static void main(String[] args) throws IOException {  
        // 读取该文件的内容,存储到一个字符串中  
        BufferedReader br = new BufferedReader(new FileReader("E:\\西部开源\\作业\\课后练习\\java\\18-2.txt"));  
        String line = br.readLine();  
        br.close();  

        // 把字符串转为字符数组  
        char[] chs = line.toCharArray();  

        // 对字符数组进行排序  
        Arrays.sort(chs);  

        // 把排序后的字符数组转换为字符串  
        String s = new String(chs);  

        // 把字符串再次写入ss.txt中  
        BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\西部开源\\作业\\课后练习\\java\\18-2W.txt"));  
        bw.write(s);  
        bw.newLine();  
        // 释放资源  
        bw.close();  
   }
}

以上是关于Java集合/数组排序知识与IO流结合实例的主要内容,如果未能解决你的问题,请参考以下文章

JAVA IO流相关代码(Properties类的常见方法与应用)

一个Java基础练习

java IO流集合类部分小知识点总结

集合与IO流结合的练习

Java中的IO流

IO流相关知识(File,字节流,字符流,特殊操作流(标准输入流,标准输出流,对象序列化与反序列化,properties与IO流结合))相关知识总结