有关IO流的JAVA编程,要求:把一个数组的元素复制到另个数组;去除重复元素不能用SET集合
发布网友
发布时间:2022-05-03 02:09
我来回答
共3个回答
热心网友
时间:2023-10-05 03:09
以int数组为例
先对该数组排序,
因为是排序过的,相同的值会集中在一起
然后循环该数组,
对于每个值,第一次出现时保存到文件里,以后出现时无视
代码如下
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
// int型Sample数组
int[] testArr = { 8, 1, 2, 3, 4, 5, 4, 3, 2, 2, 5, 1, 2, 3, 4, 1, 2, 3,
5, 8 };
// 对该数组排序
Arrays.sort(testArr);
try {
// 创建输出文件
File outFile = new File("c://result.txt");
PrintWriter pf = new PrintWriter(outFile);
// 判断值
int checkValue = 0;
// 循环整个数组
for (int i = 0; i < testArr.length; i++) {
if (i == 0) {
// 把第一个值放到checkValue并保存到文件
checkValue = testArr[0];
pf.println(checkValue);
} else {
// 数组里的当前值不等于checkValue
if (checkValue != testArr[i]) {
// 把当前值放到checkValue并保存到文件
checkValue = testArr[i];
pf.println(checkValue);
}
}
}
pf.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
热心网友
时间:2023-10-05 03:09
package com.ajax.test;
import java.io.File;
import java.io.FileWriter;
import java.util.Arrays;
/**
* 把一个数组的元素复制到另个数组; 去除重复元素不能用SET集合; 每次复制的记录输到一个文件里
*
* @author ajax_2003
* @version 1.0, 2009-7-26
*
*/
public class CopyArrayAndRemoveDuplicate {
private static String FILE_PATH = "d:/abc.txt";
private static File file;
static {
file = new File(FILE_PATH);
}
/**
* 取出冗余数据
*
* @param nums
* 原数组
*/
private int[] removeDuplicate(int[] nums) throws Exception {
int[] tmpArray = new int[nums.length];
int count = 0;
loop: //
for (int i = 0; i < nums.length; i++) {
int tmp = nums[i];
for (int j = 0; j < count; j++) {
if (tmp == tmpArray[j])
continue loop;
}
tmpArray[count++] = tmp;
log("成功复制了元素" + tmp);// 写日志
}
return copyArray(tmpArray, 0, count);
}
/**
* 拷贝数组
*
* @param srcArray
* 要拷贝的数组
* @param startIndex
* 拷贝起始索引
* @param endIndex
* 拷贝结束索引
* @return 结果数组
*/
private int[] copyArray(int[] srcArray, int startIndex, int endIndex)
throws Exception {
if (endIndex <= startIndex)
throw new Exception("Argumens wrong!");
int[] desArray = new int[endIndex - startIndex];
System.arraycopy(srcArray, startIndex, desArray, 0, desArray.length);
return desArray;
}
/**
* 输出操作日志(即: 每次复制的记录输到一个文件里)
*
* @param oprate
*/
private void log(String oprate) {
FileWriter out = null;
try {
out = new FileWriter(file, true);
out.write(oprate + "\r\n");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (out != null)
out.close();
out = null;
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
public static void main(String[] args) {
int[] nums = { 1, 223, 1, 2, 2, 2, 3, 2, 3, 34, 45, 5, 5, 3, 23, 2, 2,
3, 4, 5, 5, 6, 7, 78, 8, 9, 34, 90, 45, 675, 4, };
int[] finalArray;
try {
finalArray = new CopyArrayAndRemoveDuplicate()
.removeDuplicate(nums);
System.out.println(Arrays.toString(finalArray));
} catch (Exception e) {
e.printStackTrace();
}
}
}
有些地方可能考虑的不完全,见谅!
热心网友
时间:2023-10-05 03:10
用hashtable行不,继承自java.util.Dictionary<K,V>,或者hashmap,都不是继承自set