java.util.Arrays.sort两种方式的排序(及文件读写练习)
2023-09-14 08:57:55 时间
public class SortTest{
public static void main(String args[]) throws IOException, ClassNotFoundException {
FileReader InWord = new FileReader(new File("words.txt"));
BufferedReader in = new BufferedReader(InWord);
String ws[] = new String[100];
String input;
int index = 0;
while((input=in.readLine())!=null)
ws[index++]=input;
Arrays.sort(ws, 0, index);
BufferedWriter out = new BufferedWriter(new FileWriter(new File("SortWords.txt")));
for(String s : ws){
if(s==null)
break;
System.out.println(s);
out.write(s, 0, s.length());
out.newLine();
}
in.close();
out.close();
myTest myArray[] = new myTest[20];
in = new BufferedReader(new FileReader(new File("words.txt")));
index=0;
while((input=in.readLine())!=null){
ws[index++]=input;
}
for(int i=0; i index; ++i){
String str[]=ws[i].split(" ");
myArray[i] = new myTest(Integer.parseInt(str[0]), str[1]);
/*
开始的时候是这样写的, 奥心死了, 作死的节奏啊.....半天没找出来哪里出现了空指针
myArray[i].x=Integer.parseInt(str[0]);
myArray[i].name=str[1];
*/
}
//1. 利用 自定义的 Comparator类中的compare 方法进行排序
Arrays.sort(myArray, 0, index, new myComparator());
//2. 利用 接口Comparable中的compareTo进行排序
//Arrays.sort(myArray, 0, index);
DataOutputStream dOut = new DataOutputStream(new FileOutputStream(new File("SortWords.txt")));
for(myTest tmp : myArray){
if(tmp==null) break;
System.out.println(tmp.x + " " + tmp.name);
dOut.writeInt(tmp.x);
dOut.writeChar( );
dOut.writeChars(tmp.name);
dOut.writeChar(\n);
}
//如果想要利用ObjectIputStream反串行化构造对象,就必须保证源文件已经是 利用ObjectOutputStream 写入的,否则出现错误
ObjectOutputStream ObjOut = new ObjectOutputStream(new FileOutputStream(new File("SortWords.txt")));
for(int i=0; i index; ++i)
ObjOut.writeObject(myArray[i]);
//通过这种方法,可以避免ObjcetInputStream.readObject()中产生EOFException异常
//ObjOut.writeObject(null);
index=0;
myTest inputTmp;
ObjectInputStream ObjIn = new ObjectInputStream(new FileInputStream(new File("SortWords.txt")));
try{
while((inputTmp=(myTest)ObjIn.readObject())!=null){
myArray[index++]=inputTmp;
}
}catch(IOException e){e.printStackTrace(); }finally{ ///放生的EOFException异常时IOException的子类
System.out.println("EOFException处理完毕!");
}
System.out.println("Finish!");
class myTest implements Comparable myTest , Serializable{
int x;
String name;
public myTest(){}
public myTest(int x, String name){
this.x=x;
this.name=name;
}
public int compareTo(myTest tmp){
if(x==tmp.x)
return name.compareTo(tmp.name);
else return x-tmp.x;
}
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException{
//in.defaultReadObject();
x=(int)in.readInt();
name=(String)in.readObject();
}
private void writeObject(ObjectOutputStream out) throws IOException{
//out.defaultWriteObject();
out.writeInt(x);
out.writeObject(name);
}
class myComparator implements Comparator myTest {
public int compare(myTest o1, myTest o2){
if(o1.x==o2.x)
return o1.name.compareTo(o2.name);
else return o1.x - o2.x;
}
public boolean equals(Object o1){
return true;
}
}
相关文章
- JAVA大数据后台管理系统
- Java代码实现文件上传「建议收藏」
- smalldatetime java,如何在数据导入期间将平面文件中的dd-mmm-yy值格式化为smalldatetime?…[通俗易懂]
- Java实现文件写入——IO流(输入输出流详解)[通俗易懂]
- java指定长度数组长度_Java声明数组时不能指定其长度[通俗易懂]
- java calendar计算时间差_Java Calendar 计算时间差
- java删除文件目录及文件_Java删除文件,目录
- java pfx_如何在Java中读取.pfx文件的内容?
- java冒泡排序概练_Java的冒泡排序[通俗易懂]
- java源程序文件扩展名_JAVA源代码的扩展名为( )
- java源程序文件的扩展名_使用Java语言编写的源程序保存时的文件扩展名是什么…
- java循环语句_Java中的循环语句
- java motherfree video_Java Config 下的Spring Test方式
- java代码大全_java新手入门-java新手代码大全[通俗易懂]
- java冒泡排序经典代码_Java 8大经典排序算法(含源代码),必须收藏!
- java public interface_Java 接口interface的基础[通俗易懂]
- java 读取字符串文件_Java读取文件为字符串
- 【说站】java中do-while语句是什么?
- 腾讯学长分享的这份Java面试八股文手册,让我GitHub下载量破百万
- java销毁定时器_Java 定时器退出解决方案
- Java数组循环_java遍历object数组
- 【Android 安全】DEX 加密 ( Java 工具开发 | 解压 apk 文件 | 加密生成 dex 文件 | 打包未签名 apk 文件 | 文件解压缩相关代码 )
- java读取文件夹下所有文件(包括子文件夹)的文件名详解编程语言
- java 正则表达式的应用:读取文件,获取其中的电话号码详解编程语言
- Linux下Java开发:给初学者的指引(linux下java编程)
- Java Set.toArray()方法:用Set集合中的所有对象创建一个数组
- Java与Oracle的完美结合(java和oracle)
- 解析Java中的Linux路径(java中linux路径)
- 数据深入探究Java操作Redis过期数据(redisjava过期)
- 如何在Linux系统下有效地启动Java程序,让你的代码在Linux中也能正常运行?(linux下启动java)
- Java文件在Linux系统中的使用(java文件linux)
- 提升Java工程师技术Oracle搭配Java的绝佳美妙(java搭配oracle)
- Oracle与Java的结合图像处理的快速开发(java图片oracle)
- java中定义常量方法介绍
- java程序打包成exe与jar的图文教程
- java实现将域名解析成ip示例
- java实现两台服务器间文件复制的方法