查找两个2 TSV文件之间的唯一元素

时间:2016-09-07 19:26:31

标签: java collections

嗨,伙计们,我遇到了我的一个问题任务。我尝试了不同的方法,但我仍然无法做到。

1 个答案:

答案 0 :(得分:1)

我认为这样做会有所帮助。首先处理旧文件,然后覆盖新文件中的现有文件。

import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

...

public class ContactsProcessor {
    public static void main(String[] args) {
        List<String> contactsNew = Files.readAllLines(Paths.get("contactsNew.tsv"));
        List<String> contactsOld = Files.readAllLines(Paths.get("contactsOld.tsv"));
        List<String> contactsGmail = new ArrayList<String>();
        Map<String, String> gmailMap = new HashMap<String, String>();

        // process old contacts first -- add to a Map
        for (String info : contactsOld) {
            String[] parts = info.split("\\t");
            if (info.endsWith("@gmail.com")) {
                gmailMap.put(parts[0], info);
            }
        }
        // process new contacts second -- add to a Map, overwriting old contacts with same name
        for (String info : contactsNew) {
            String[] parts = info.split("\\t");
            if (info.endsWith("@gmail.com")) {
                gmailMap.put(parts[0], info);
            }
        }
        contactsGmail.addAll(gmailMap.values());
        Collections.sort(contactsGmail);

        Files.write(Paths.get("contactsGmail.tsv"), contactsGmail);
    }
}