Установить с дубликатами Java - импорт из файла - Java - PullRequest
0 голосов
/ 02 июля 2018

У меня небольшой проект.

Проект импортирует текстовый файл в строку (кодировка, аналогичная CSV - содержит точки с запятой = ";").

На следующих шагах String изменяется на ArrayList.

Затем, используя Predicate, я удаляю элементы, которые меня не интересуют.

В конце я заменяю ArrayList на TreeSet, чтобы удалить дубликаты. К сожалению, здесь есть проблема, потому что возникают дубликаты ...

Я проверил в Notepadd ++, изменив кодировку в ANSI, чтобы проверить, нет ли ненужных символов.

К сожалению, все выглядит хорошо, и дубликаты все еще там.

Загруженный входной файл - https://drive.google.com/open?id=1OqIKUTvMwK3FPzNvutLu-GYpvocUsSgu

Есть идеи?

public class OpenSCV {
    private static final String SAMPLE_CSV_FILE_PATH = "/Downloads/all.txt";

    public static void main(String[] args) throws IOException {

        File file = new File(SAMPLE_CSV_FILE_PATH);
    String str = FileUtils.readFileToString(file, "utf-8");
    str = str.trim();
    String str2 = str.replace("\n", ";").replace("\"", "" ).replace("\n\n",";").replace("\\*www.*\\","")
            .replace("\u0000","").replace(",",";").replace(" ","").replaceAll(";{2,}",";");

        List<String> lista1 = new ArrayList<>(Arrays.asList((str2.split(";"))));

        Predicate<String> predicate = s -> !(s.contains("@"));

        Set<String> removeDuplicates = new TreeSet<>(lista1);

        removeDuplicates.removeIf(predicate);

        String fileName2 = "/Downloads/allMails.txt";
        try ( BufferedWriter bw =
                      new BufferedWriter (new FileWriter (fileName2)) )
        {
            for (String line : removeDuplicates) {
                bw.write (line + "\n");
            }
            bw.close ();
        } catch (IOException e) {
            e.printStackTrace ();
        }
    }
}

1 Ответ

0 голосов
/ 02 июля 2018

перед выполнением str.replace вы можете попробовать str.trim, чтобы удалить любые пробелы или нежелательные и невидимые символы.

str = str.trim()
...