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

2025-05-29 0 21

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

1、排序思路

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

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

(3)转换为数字类型

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

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

2、实例

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45
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个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件。

代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

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

原文链接:https://www.py.cn/java/shuzu/26777.html

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 java使用IO流对数组排序实例讲解 https://www.kuaiidc.com/108458.html

相关文章

发表评论
暂无评论