java使用IO流对数组排序实例讲解
作者:小妮浅浅 发布时间:2023-09-04 02:24:19
标签: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();
}
}
来源:https://www.py.cn/java/shuzu/26777.html


猜你喜欢
- @EqualsAndHashCode注解@EqualsAndHashCode注解的作用就是自动实现model类的equals方法和hashc
- 单例模式是设计模式中最常见也最简单的一种设计模式,保证了在程序中只有一个实例存在并且能全局的访问到。比如在Android实际APP 开发中用
- 在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能
- 文件夹,文件这是常见的,怎么创建?要不要先判断是否存在?非常非常基础的知识点using System;using System.Collec
- 前言本来没有计划这一篇文章的,只是在看完SpringBoot核心原理后,突然想到之前开发中遇到的MVC自动失效的问题,虽然网上有很多文章以及
- RecyclerView是Android 5.0新增的控件,在android-support-v7下面。官方文档对RecycleView介绍
- 队列简介队列是一个有序列表,可以用数组或是链表来实现。遵循先入先出的原则。即先存入队列的数据,先取出,后存入的后取出。示意图:(使用数组模拟
- 1.简介建议阅读本文最好对Dokcer有一些了解首先我们先了解一下Docker是什么Docker 属于 Linux 容器的一种封装,提供简单
- 近期公司要做报表功能,在网上搜索下表格的样式后便自己写了一个自定义的表格控件,该表格控件能根据设置的数据中数据的最大值自动设置左侧信息栏显示
- 1、事务介绍事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元
- 0、前言本文主要对几种常见Java序列化方式进行实现。包括Java原生以流的方法进行的序列化、Json序列化、FastJson序列化、Pro
- 前言以前我们还需要手写数据库设计文档、现在可以通过引入screw核心包来实现Java 数据库文档一键生成。话不多说、直接上代码演示。支持的数
- SurfaceViewSurfaceView从源码上看继承自View,但在内部实现上SurfaceView和其他View有很多区别。 Sur
- ExpandoObject:表示一个对象,该对象包含可在运行时动态添加和移除的成员。 dynamic dynEO = new Expando
- 1.本系统和现在有的考试系统有以下几种优势:a.和现在有的系统比较起来,本系统有科目、章节、老师、学生、班级等信息的管理,还有批阅试卷查看已
- 今天在QQ空间看到一篇关于C#语言验证18位身份证号码的验证方法和实例代码,抽了些时间学习了一下,个人觉得还不错,所以把它记了下来,方便以后
- 目录 Dubbo是什么?Dubbo能做什么?介绍Api模块实现producer模块实现consumer模块实现 Dubb
- 在Android中,线程内部或者线程之间进行信息交互时经常会使用消息,这些基础的东西如果我们熟悉其内部的原理,将会使我们容易、更好地架构系统
- 微信开发API如何接入服务器,下面就为大家进行介绍一、说明* 本示例根据微信开发文档:http://mp.weixin.qq.com/wik
- 前言其实小编之前一直都是用的Java来开发Android,但是工作需求,开始了Kotlin的编程,接触到了JetPack,发现其中的Navi