「文件去重Java」文件去重算法
本篇文章给大家谈谈文件去重Java,以及文件去重算法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、JAVA合并两个文件并去重
- 2、java编程,文件去重
- 3、java面试题:将一个20G的数据,存入一个运行2G的电脑里,每个数据占一行,怎么去重?
- 4、Java中如何去除List中的重复的值
- 5、用java读取txt文件,然后对数据进行排序,去重等操作。
JAVA合并两个文件并去重
先做一个buffer:
StringBuilder sb_a = new StringBuilder(); // for a
StringBuilder sb_b = new StringBuilder(); // for b
然後读文件:
Path aFile = Paths.get("a.txt");
try (BufferedReader reader = Files.newBufferedReader( aFile, Charset.defaultCharset())) {
String lineFromFile = "";
while((lineFromFile = reader.readLine()) != null){
sb_a.append(lineFromFile);
}
} catch(IOException exception) {
System.out.println("Error while reading file");
}
b.txt也是同一个方法
跟著以你自定义的方法去比较两个怎样合拼,暂存为String merged = ...;
最後写回文件:
Path abFile = Paths.get("ab.txt");
try (BufferedWriter writer = Files.newBufferedWriter( abFile, Charset.defaultCharset())) {
writer.append(merged);
writer.newLine(); // optional
writer.flush();
} catch(IOException exception) {
System.out.println("Error writing to file");
}
java编程,文件去重
读取文件,把每行都存成一个字符串,放入list中,重复的就不添加,最后删除文件,把list写入文件。。。
java面试题:将一个20G的数据,存入一个运行2G的电脑里,每个数据占一行,怎么去重?
这题考的是大数据去重,数据量大于内存,即无法直接在内存中去重,那么有两个方案:
1、内存外去重
也就是将数据存入数据库,然后利用数据库进行排序并去重。
优缺点:
1)优点:简单直接
2)缺点:消耗大
2、算法去重
题目中说明是20G数据,假设每行数据是1k,则数据行数是20M(如果每行数据是512字节,则数据行数是40M),可使用MD5对每行数据进行映射,获得16字节映射吗,即总共需要内存空间320M(或640M),满足内存内去重的需求。
优缺点:
1)优点:在内存内进行处理,速度明显比内存为要快。
2)缺点:需要进行额外的编码,程序复杂度和效率要求较高。
Java中如何去除List中的重复的值
1.用双重循环逐一检查元素是否重复,代码如下:
public static void removeDuplicate(List list) {
for (int i = 0; i list.size() - 1; i++) {
for (int j = list.size() - 1; j i; j--) {
if (list.get(j).equals(list.get(i))) {
list.remove(j);
}
}
}
}
2.通过HashSet去重,代码如下:
public static void removeDuplicate1(List list) {
HashSet h = new HashSet(list);
list.clear();
list.addAll(h);
}
用java读取txt文件,然后对数据进行排序,去重等操作。
因为各个列没有分隔符,我添加了逗号作分隔符.文件内容如下.
Id Name Year Current Cumulative
16, Melissa Will, 3, 5, 9
17, Naomi Thomas, 3, 3, 12
21, Ronaldo Gomes, 3, 1, 11
22, Sam Del-Prete, 2, 4, 10
2, Abe Storey, 3, 4, 6
3, Anthony Tabrin, 3, 1, 7
18, Nathan Bentley, 3, 2, 19
你用这个文件内容,试一下下边的程序.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) throws Exception {
FileReader fr = new FileReader("H:\\test.txt");
BufferedReader br = new BufferedReader(fr);
int row = 1;
int sum1 = 0, sum2 = 0;
FileWriter fw = new FileWriter("H:\\new.txt");
BufferedWriter bw = new BufferedWriter(fw);
bw.write("Id Name Year Current Cumulative");
bw.newLine();
ListString first = new ArrayListString();
while (br.ready()) {
if (row++ == 1) {
br.readLine();
continue;
}
String line = br.readLine();
String[] array = line.split(",", 5);
String tmp = array[1].trim().substring(0, 1);
if (!first.contains(tmp)) {
sum1 += toInt(array[3].trim());
sum2 += toInt(array[4].trim());
bw.write(line);
bw.newLine();
first.add(tmp);
}
}
bw.write("sum : \t\t\t\t" + sum1 + "\t" + sum2);
bw.newLine();
bw.write("average : \t\t\t" + (sum1 / (first.size() * 1.0)) + "\t"
+ sum2 / (first.size() * 1.0));
br.close();
fr.close();
bw.close();
fw.close();
}
public static int toInt(String str) {
try {
return Integer.parseInt(str);
} catch (Exception e) {
return 0;
}
}
}
文件去重Java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于文件去重算法、文件去重Java的信息别忘了在本站进行查找喔。