java使用IO流对数组排序实例讲解

 更新时间:2021年02月22日 14:49:32   作者:小妮浅浅  
在本篇文章里小编给大家整理的是一篇关于java使用IO流对数组排序实例讲解内容,有兴趣的朋友们可以学习下。

在学会了java中io流的使用后,我们对于数组的排序,又多了一种使用方法。大家知道流处理数据的效率是比较理想的,那么在具体操作数组排序上,很多人对于排序的方法还没有明确。下面我们先java使用流对数组排序的思路为大家进行梳理,然后带来对应的实例代码方法。

1、排序思路

(1)从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取

(2)询问用户需要多少位数的数组

(3)转换为数字类型

(4)将用户输入数字存入数组

(5)把数组按排序需求并打印出来

2、实例

 public static void main(String[] args) {
 // TODO Auto-generated method stub
 try {
 //数组a()的数字个数,由用户输入决定
 InputStreamReader isr=new InputStreamReader(System.in);
 //从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取
 BufferedReader bfr=new BufferedReader(isr);
 //询问用户需要多少位数的数组
 System.out.println("请输入需要多少位数的数组:\n");
 String a1=bfr.readLine();
 //将a1转换为数字类型
 int i=Integer.parseInt(a1);
 //提示用户输入数组数据
 System.out.println("请向数组中存入"+i+"个数据:\n");
 //将用户输入数字存入数组
 Integer[] a=new Integer[i];
 for(int j=0;j<i;j++){
 System.out.println("第"+(j+1)+"个:");
 a[j]=new Integer(bfr.readLine());
 }
 //把数组按升序排序并打印出来
 for(int k=1;k<i;k++){
 for(int m=0;m<(i-k);m++){
 if(a[m]>a[m+1]){
 //Integer temp=new Integer(0);
 int temp=0;
 temp=a[m];
 a[m]=a[m+1];
 a[m+1]=temp;
 }
 }
 }
 //输出排序后的数组
 System.out.println("排序后\n");
 for(int t=0;t<=i;t++){
 System.out.println(a[t]);
 }
 
 } catch (Exception e) {
 // TODO: handle exception
 e.printStackTrace();
 }
 }
 
}

实例扩展:

键盘录入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如何使用流对数组排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java实现定制数据透视表的示例详解

    java实现定制数据透视表的示例详解

    数据透视表(Pivot Table)是一种数据分析工具,通常用于对大量数据进行汇总、分析和展示,本文主要介绍了如何使用Java将计算项添加到数据透视表中,感兴趣的可以了解下
    2023-12-12
  • idea如何关闭右侧类显示方法

    idea如何关闭右侧类显示方法

    这篇文章主要介绍了idea如何关闭右侧类显示方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • springMVC 用户登录权限验证实现过程解析

    springMVC 用户登录权限验证实现过程解析

    这篇文章主要介绍了springMVC 用户登录权限验证实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Java数组模拟优先级队列数据结构的实例

    Java数组模拟优先级队列数据结构的实例

    这篇文章主要介绍了Java数组模拟优先级队列数据结构的实例,优先级队列中的元素会被设置优先权,本文的例子借助了Java中的TreeSet和TreeMap,需要的朋友可以参考下
    2016-04-04
  • Java观察者模式例子

    Java观察者模式例子

    这篇文章主要介绍了Java观察者模式例子的相关资料,需要的朋友可以参考下
    2015-12-12
  • java代码实现俄罗斯方块

    java代码实现俄罗斯方块

    这篇文章主要为大家详细介绍了java代码实现俄罗斯方块,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • 基于javaweb+jsp的游泳馆会员管理系统(附源码)

    基于javaweb+jsp的游泳馆会员管理系统(附源码)

    这篇文章主要介绍了基于javaweb+jsp的游泳馆会员管理系统,开发工具eclipse/idea/myeclipse/sts等均可配置运行,此源代码社和课程设计,大作业及毕业设计项目,需要的朋友可以参考下
    2022-04-04
  • Java设计模式之享元模式实例详解

    Java设计模式之享元模式实例详解

    这篇文章主要介绍了Java设计模式之享元模式,结合实例形式详细分析了享元模式的概念、功能、定义及使用方法,需要的朋友可以参考下
    2018-04-04
  • IDEA安装lombok插件设置Enable Annotation Processing后编译依然报错解决方法

    IDEA安装lombok插件设置Enable Annotation Processing后编译依然报错解决方法

    这篇文章主要介绍了IDEA安装lombok插件设置Enable Annotation Processing后编译依然报错解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Java日常练习题,每天进步一点点(58)

    Java日常练习题,每天进步一点点(58)

    下面小编就为大家带来一篇Java基础的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你
    2021-08-08

最新评论