如何从Android中的arraylist中删除重复值

Kum*_*mar 32 java android arraylist

ArrayList<String> values=new ArrayList<String>();
values.add("s");
values.add("n");
values.add("a");
values.add("s");
Run Code Online (Sandbox Code Playgroud)

在这个数组中,我想删除重复的值.

Sil*_*uti 56

试试这个...

    ArrayList<String> values=new ArrayList<String>();
    HashSet<String> hashSet = new HashSet<String>();
    hashSet.addAll(values);
    values.clear();
    values.addAll(hashSet);
Run Code Online (Sandbox Code Playgroud)

快乐的编码......

  • 你所做的就是复制最佳答案...... (3认同)

小智 23

试试下面的代码,

ArrayList<String> values=new ArrayList<String>();
String newValue;

// repeated additions:
if (!values.contains(newValue)) {values.add(newValue);}
Run Code Online (Sandbox Code Playgroud)

  • 简短而聪明的答案+1 (2认同)

Vai*_*iya 12

HashSet hs = new HashSet();

hs.addAll(demoArrayList); // demoArrayList= name of arrayList from which u want to remove duplicates 

demoArrayList.clear();
demoArrayList.addAll(hs);
Run Code Online (Sandbox Code Playgroud)


Dav*_*und 2

我认为强制执行唯一数组列表的一个真正简洁的解决方案是这个,如果它对于您想要实现的目标来说不是太多代码的话。

public class UniqueOverridingList extends ArrayList {

    public enum LAST_RESULT {
        ADD, OVERRIDE, NOTHING;
    }

    private LAST_RESULT lastResult;

    public boolean add(T obj) {
        for (int i = 0; i < size(); i++) {
            if (obj.equals(get(i))) {
                set(i, obj);
                lastResult = LAST_RESULT.OVERRIDE;
                return true;
            }
        }
        boolean b = super.add(obj);
        if (b) {
            lastResult = LAST_RESULT.ADD;
        } else {
            lastResult = LAST_RESULT.NOTHING;
        }
        return b;
    }

    public boolean addAll(Collection c) {
        boolean result = true;
        for (T t : c) {
            if (!add(t)) {
                result = false;
            }
        }
        return result;
    }

    public LAST_RESULT getLastResult() {
        return lastResult;
    }

}
Run Code Online (Sandbox Code Playgroud)