在不使用集合的情况下对文件中的整数进行排序 java
Sorting integers in a file without using collections java
我需要在不使用 array/arraylist 的情况下对文件中的整数进行排序。必须使用 RandomAccessFile 读取该文件。除了使用 arraylist 之外,我想不出任何解决这个问题的方法。我可以使用一些变量。另外,如何交换文件中的两个数字?
import java.io.*;
class Sort
{
public static void main(String[] args)
{
try {
RandomAccessFile abc = new RandomAccessFile(args[0], "rw");
long n = abc.length();
System.out.println(n);
long i = 0;
while (i <= n) {
System.out.println("Coming Here");
int c = Integer.parseInt(abc.readUTF());
System.out.println(c);
i = i + 1;
}
} catch (IOException e) {
System.out.println(e);
}
}
}
首先,由于文本数字表示的长度不同,当文件中的文本为整数时,任务会很困难。
- 首先应该检查数据是二进制的。
所以我假设包含 int
的二进制数据存储在文件中。
一个javaint
占4个字节,所以每个文件位置都是四折。
因此您可以使用 数组。如果所有的数组,Arrays.sort
将解决它。否则几个数组和一个合并排序算法是可行的。
使用随机访问文件,您可以使用以下方法进行快速排序或合并排序:
fh.seek(i1*4L);
int n1 = fh.readInt();
// If ints are not stored in big endian byte order:
// int n1littleEndian = Integer.reverse(n1);
在生产环境中,会获取关联的通道,并使用内存映射字节缓冲区;加快速度。
我需要在不使用 array/arraylist 的情况下对文件中的整数进行排序。必须使用 RandomAccessFile 读取该文件。除了使用 arraylist 之外,我想不出任何解决这个问题的方法。我可以使用一些变量。另外,如何交换文件中的两个数字?
import java.io.*;
class Sort
{
public static void main(String[] args)
{
try {
RandomAccessFile abc = new RandomAccessFile(args[0], "rw");
long n = abc.length();
System.out.println(n);
long i = 0;
while (i <= n) {
System.out.println("Coming Here");
int c = Integer.parseInt(abc.readUTF());
System.out.println(c);
i = i + 1;
}
} catch (IOException e) {
System.out.println(e);
}
}
}
首先,由于文本数字表示的长度不同,当文件中的文本为整数时,任务会很困难。
- 首先应该检查数据是二进制的。
所以我假设包含 int
的二进制数据存储在文件中。
一个javaint
占4个字节,所以每个文件位置都是四折。
因此您可以使用 数组。如果所有的数组,Arrays.sort
将解决它。否则几个数组和一个合并排序算法是可行的。
使用随机访问文件,您可以使用以下方法进行快速排序或合并排序:
fh.seek(i1*4L);
int n1 = fh.readInt();
// If ints are not stored in big endian byte order:
// int n1littleEndian = Integer.reverse(n1);
在生产环境中,会获取关联的通道,并使用内存映射字节缓冲区;加快速度。