使用SortedSet排序以删除重复值不会改变

时间:2013-10-11 08:16:27

标签: android

我有一个对象列表我想要删除要删除的重复对象(使用对象属性)。以下代码第一次正常工作。但是当我再次尝试通过执行相同的代码来删除重复值时,先前的排序值会出现。请纠正我代码中的错误。

注意:列表mCaseloadsHeads是在我的班级

中公开定义的
  //Getting the values from the web service
    mCaseloadsHeads = parsedXML.getCaseLoadValues("get_Caseload_ClientServiceGroupID", param);
        Iterator<Caseload> iterator = mCaseloadsHeads.iterator();
                            while (iterator.hasNext()) {
                                removeDuplicateClientName.add(iterator.next());
                            }
                            mCaseloadsHeads.clear();
                            mCaseloadsHeads.addAll(removeDuplicateClientName);

            SortedSet<Caseload> removeDuplicateClientName = new TreeSet<Caseload>(
                        new Comparator<Caseload>() {
                            @Override
                            public int compare(Caseload caseload0, Caseload caseload1) {
                                return caseload0.ClientName.compareTo(caseload1.ClientName);

                            }
                        });

1 个答案:

答案 0 :(得分:2)

一个集合,不能按照定义保留重复

对我来说,这可能有问题

  1. 你的.clear();失败,你是不是感到疼痛mCaseloadsHeads.isEmpty();是真的吗?

  2. 您的比较器失败

  3. 如果ClientName是一个字符串(引用你的另一个post,就像这样(返回0表示它们相等)

       SortedSet<Caseload> removeDuplicateClientName = new TreeSet<Caseload>(
                        new Comparator<Caseload>() {
                            @Override
                            public int compare(Caseload caseload0, Caseload caseload1) {
                                return caseload0.ClientName.equals(caseload1.ClientName) ? 0 : 1;
                            }
                        });