合并两个列表。感觉使用HashSet

时间:2016-01-10 16:10:14

标签: java list merge hashmap

我找到了一个包含合并方法(https://commons.apache.org/proper/commons-math/jacoco/org.apache.commons.math3.stat.clustering/DBSCANClusterer.java.html

的算法
private <T> List<T> theirMerge(final List<T> one, final List<T> two) {
    final Set<T> oneSet = new HashSet<T>(one);
    for (T item : two) {
        if (!oneSet.contains(item)) {
            one.add(item);
        }
    }
    return one;
}

在这里使用HashSet的主要好处是什么?

我更简单的实现看起来像这个

private <T> List<T>  myMerge (ArrayList<T> one, ArrayList<T> two){
    for (T item: two) {
        if(!one.contains(item)){
            one.add(item);
        }
    }
    return one;
}

1 个答案:

答案 0 :(得分:0)

您应该避免循环并使用addAll方法合并两个set并避免重复,例如:

oneSet.addAll(two);

在列表中,您明确检查list中是否有元素,然后只有您添加到第二个列表。