Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从ArrayList中删除重复项<;定制类>;安卓_Android_Listview_Arraylist_Duplicates - Fatal编程技术网

Android 从ArrayList中删除重复项<;定制类>;安卓

Android 从ArrayList中删除重复项<;定制类>;安卓,android,listview,arraylist,duplicates,Android,Listview,Arraylist,Duplicates,我只能从sdcard加载歌曲,并获得他们的专辑列表,但其中包含重复的内容。如何从我的相册列表中删除重复项。My Album list是ArrayList的一种类型,Album类中包含两个字符串变量。 谢谢您的帮助。对于您的自定义类,添加一个equals和hashCode方法 public static class Custom { public final String item1; public final String item2; public Custom(Str

我只能从sdcard加载歌曲,并获得他们的专辑列表,但其中包含重复的内容。如何从我的相册列表中删除重复项。My Album list是ArrayList的一种类型,Album类中包含两个字符串变量。
谢谢您的帮助。

对于您的自定义类,添加一个equals和hashCode方法

public static class Custom
{
    public final String item1;
    public final String item2;
    public Custom(String i1, String i2) {
        item1 = i1;
        item2 = i2;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }

        Custom custom = (Custom) o;

        if (!item1.equals(custom.item1)) {
            return false;
        }
        if (!item2.equals(custom.item2)) {
            return false;
        }

        return true;
    }

    @Override
    public int hashCode() {
        int result = item1.hashCode();
        result = 31 * result + item2.hashCode();
        return result;
    }

}
然后在添加之前,请检查Arraylist在添加之前是否不包含自定义列表

final ArrayList<Custom> customs = new ArrayList<Custom>();
Custom one = new Custom("aa", "bb");
Custom two = new Custom("aa", "bb");

if (!customs.contains(one)) {
    arraylist.add(one);
}

if (!customs.contains(two)) {
    arraylist.add(two);
}
final ArrayList customs=new ArrayList();
定制一=新定制(“aa”、“bb”);
定制二=新定制(“aa”、“bb”);
如果(!customs.contains(一个)){
arraylist.add(一个);
}
如果(!海关包含(两个)){
添加(两个);
}

可能重复的。。。当然。。。这是行不通的。。。显然,它还需要一件事。。。可以比较项目的东西…这不是那个问题的重复。我可以从预定义类的ArrayList中删除元素,但我的问题是使用包含多个变量的自定义类使列表唯一。。。但你还是应该知道集合是如何比较对象的。。。那么看看@petey answer…@Selvin如果这对你有用,你能接受这个答案吗?我不能。。。我已经知道了。。。而且。。。我没问…:P好吧,至少我可以投赞成票:P