java使用IO流对数组排序实例讲解
在学会了java中io流的使用后,我们对于数组的排序,又多了一种使用方法。大家知道流处理数据的效率是比较理想的,那么在具体操作数组排序上,很多人对于排序的方法还没有明确。下面我们先java使用流对数组排序的思路为大家进行梳理,然后带来对应的实例代码方法。
1、排序思路
(1)从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取
(2)询问用户需要多少位数的数组
(3)转换为数字类型
(4)将用户输入数字存入数组
(5)把数组按排序需求并打印出来
2、实例
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
try{
//数组a()的数字个数,由用户输入决定
InputStreamReaderisr=newInputStreamReader(System.in);
//从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取
BufferedReaderbfr=newBufferedReader(isr);
//询问用户需要多少位数的数组
System.out.println("请输入需要多少位数的数组:\n");
Stringa1=bfr.readLine();
//将a1转换为数字类型
inti=Integer.parseInt(a1);
//提示用户输入数组数据
System.out.println("请向数组中存入"+i+"个数据:\n");
//将用户输入数字存入数组
Integer[]a=newInteger[i];
for(intj=0;ja[m+1]){
//Integertemp=newInteger(0);
inttemp=0;
temp=a[m];
a[m]=a[m+1];
a[m+1]=temp;
}
}
}
//输出排序后的数组
System.out.println("排序后\n");
for(intt=0;t<=i;t++){
System.out.println(a[t]);
}
}catch(Exceptione){
//TODO:handleexception
e.printStackTrace();
}
}
}
实例扩展:
键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件。
代码:
publicclassTreeSetDemo{
publicstaticvoidmain(String[]args)throwsIOException{
//创建TreeSet对象,用接口匿名内部类的方式实现Comparator接口
TreeSetts=newTreeSet(newComparator(){
//重写Comparator接口中的compare()方法
@Override
publicintcompare(Students1,Students2){
//主要排序条件:总成绩,按从高到低输出
intnum1=s2.sum(s2)-s1.sum(s1);
//次要排序条件,当总成绩相同时按学生姓名内容比较
intnum2=(num1==0)?s2.getName().length()-s1.getName().length():num1;
returnnum2;
}
});
//键盘录入学生信息
System.out.println("请输入学生信息:");
for(intx=1;x<6;x++){
Scannersc=newScanner(System.in);
System.out.print("请输入第"+x+"名学生的姓名:");
Stringname=sc.nextLine();
System.out.print("请输入第"+x+"名学生的语文成绩:");
intchineseScore=sc.nextInt();
System.out.print("请输入第"+x+"名学生的数学成绩:");
intmathScore=sc.nextInt();
System.out.print("请输入第"+x+"名学生的英语成绩:");
intenglishScore=sc.nextInt();
//将录入的学生信息封装到学生对象里
Students=newStudent();
s.setName(name);
s.setChineseScore(chineseScore);
s.setMathScore(mathScore);
s.setEnglishScore(englishScore);
//把学生对象添加到集合中
ts.add(s);
}
//创建字符缓冲输出流对象
BufferedWriterbw=newBufferedWriter(newFileWriter("18-1.txt"));
//遍历
for(Students:ts){
//利用StringBuffer中的追加功能,将需要输出的信息集合在一起
StringBuffersb=newStringBuffer();
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如何使用流对数组排序内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。