java - 如何使用两种方法从数组列表中删除重复项?

标签 java

第一个方法查找重复项,第二个方法将其删除。 我尝试了以下代码,但它不起作用。我不明白为什么。使用两种方法来完成。当我调用这些方法时,它们不会删除重复项。数组列表未更改。我想使用两种方法删除重复项。

public static int find(ArrayList<String> s, int i) {

    for (int j = i + 1; j < s.size(); j = j + 1) {
        if (s.get(i) == s.get(j)) {
            return j;
        }
    }

    return -1;
}


public static void removeDuplicates(ArrayList<String> s) {
    for (int i = 0; i < s.size(); i = i + 1) {
        int foundAt = (find(s, i));
        if (foundAt >= 0) {
            s.remove(i);
        }
    }
}

最佳答案

别担心:

public static List<String> removeDups(final List<String> orig)
{
    return new ArrayList<>(new LinkedHashSet<>(orig));
}

(注意使用LinkedHashSet,我们希望保留元素迭代顺序)

关于java - 如何使用两种方法从数组列表中删除重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22695916/

相关文章:

java - 如何将节点从 xml 文档附加到现有的 xml 文档

java - Android 为什么我在为启动画面膨胀图层列表时出现错误

java - 意外的 MVEL2 行为

java - Finalize() 方法忽略映射/列表中的对象?

java - RestEasy : org. codehaus.jackson.map.JsonMappingException : Can not deserialize instance of java. util.ArrayList out of START_OBJECT token(..)

java - SecureRandom.getInstance ("SHA1PRNG", "SUN") 总是阻塞而 new SecureRandom() 不是?

java - 在 Spring 中使用 Web Sockets 创建 Activity 提要

java - 加载数据到HDFS时出现一些错误

java - JDO - 我应该使用 detachCopy 还是 makeTransient?

java - 在运行时使用注释获取 guice 对象?