测试题

package fighting;

import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.util.Arrays;

public class Test6 {

 /**   * 6、 已知文件a.txt文件中的内容为“bcdeadferwplkou”,请编写程序读取该文件内容,并按照自然顺序排序后输出到b.txt文件中。   * 即b.txt中的文件内容应为“abcd…………..”这样的顺序。   *   */  public static void main(String[] args) throws Exception {

  BufferedReader br = new BufferedReader(new FileReader("src\\a.txt"));   BufferedWriter bw = new BufferedWriter(new FileWriter("src\\b.txt"));   String line  = br.readLine();   System.out.println(line);   char[] str=line.toCharArray();   Arrays.sort(str);   System.out.println(str);   bw.write(str);   br.close();   bw.close();  }

}

package com.itheima;

import java.io.FileReader; import java.io.FileWriter; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator;

public class Test6 {

 /**   * 6、 已知文件a.txt文件中的内容为“bcdeadferwplkou”,请编写程序读取该文件内容,并按照自然顺序排序后输出到b.txt文件中。   * 即b.txt中的文件内容应为“abcd…………..”这样的顺序。   *   */  public static void main(String[] args) throws Exception {      //定义输入流   FileReader fr= new FileReader("src\\a.txt");   //定义输出流   FileWriter fw= new FileWriter("src\\b.txt");   //定义ArrayList存储输入流中的字符   ArrayList<Character> list = new ArrayList<Character>();   int n=0;   //读取输入流中所有数据,依次存储到集合中,调用add方法的同时进行比较   while((n=fr.read())!=-1){    list.add((char)n);   }   Collections.sort(list);   //将集合中的内容迭代输出到b.txt   Iterator it = list.iterator();   while(it.hasNext()){    Character element = (Character)it.next();    fw.write(element.toString());   }   //关闭资源,数据刷新到文件中   fr.close();   fw.close();     }

}

package com.itheima;

import java.io.FileReader;
import java.io.FileWriter;
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;


public class Test6 {

	/**
	 * 6、 已知文件a.txt文件中的内容为“bcdeadferwplkou”,请编写程序读取该文件内容,并按照自然顺序排序后输出到b.txt文件中。
	 * 即b.txt中的文件内容应为“abcd…………..”这样的顺序。
	 * 思路:1,由于是文本文件,所以想到用字符流操作
	 *      2,由于要每个字符比较大小,所以使用FileReader的read方法。
	 *      3,依次读取文件内容,存到TreeSet集合中。(由于按照自然顺序排序,所以我想到了TreeSet)
	 *      4,利用TreeSet比较器的排序功能排好序后,迭代输出到b.txt
	 * 
	 */
	public static void main(String[] args) throws Exception {
		//定义输入流
		FileReader fr= new FileReader("src\\a.txt");
		//定义输出流
		FileWriter fw= new FileWriter("src\\b.txt");
		//定义TreeSet存储输入流中的字符
		TreeSet<Character> ts = new TreeSet<Character>(new MyCompare());
		int n=0;
		//读取输入流中所有数据,依次存储到集合中,调用add方法的同时进行比较
		while((n=fr.read())!=-1){
			ts.add((char)n);
		}
		//将集合中的内容迭代输出到b.txt
		Iterator it = ts.iterator();
		while(it.hasNext()){
			Character element = (Character)it.next();
			fw.write(element.toString());
		}
		//关闭资源,数据刷新到文件中
		fr.close();
		fw.close();
		
	}

}
class MyCompare implements Comparator{
	public int compare(Object o1,Object o2){
		
		Character s1 = (Character)o1;
		Character s2 = (Character)o2;
		int num = s1.compareTo(s2);
		//由于TreeSet集合不能存储相同元素,所以如果两个元素相等,需要改变返回值。
		if(num==0){
			return 1;
		}
		return num;
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值