「文件去重Java」文件去重算法

博主:adminadmin 2023-03-19 06:41:07 391

本篇文章给大家谈谈文件去重Java,以及文件去重算法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

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的信息别忘了在本站进行查找喔。