0

我想丢弃在 Person 数组列表中不匹配的 FormBean 对象。抱歉,如果代码格式不正确。

我有一个这样的数组列表

ArrayList persons = new ArrayList(); 
persons.add("Bill"); 
persons.add("Chuck"); 
persons.add("Marry");

然后我有另一个像这样的数组列表(大小不等)

ArrayList objects = new ArrayList()
for (i++; i < 5; i++) {
    objects.add(FormBean);
}

FormBean 类如下所示:

class FormBean {
    String person;
    int SSN
    String phoneNumber
}

有没有办法将人员数组列表与来自 FormBean 对象的人员进行比较,并丢弃在 Persons 数组列表中没有匹配项的 FormBean 对象。

4

4 回答 4

1
  1. 遍历FormBean列表
  2. 如果人员列表包含来自实际 FormBean 的人员姓名,则
  3. 将此 FormBean 存储在一个单独的列表中,该列表包含应删除的所有 FormBean。
  4. 最后,遍历这个待删除列表,从原来的FormBeans集合中移除这个列表中的FormBeans

选择

将所有符合您的条件(personslist包含人员)的 FormBeans 复制到一个新集合中,然后删除旧集合并使用新集合。

于 2012-07-24T20:38:54.010 回答
0

您的删除循环应如下所示:

for (Iterator<FormBean> iterator = objects.iterator(); iterator.hasNext();) {
    FormBean bean = iterator.next();
    if (!persons.contains(bean.getPerson())) {
        iterator.remove();
    }
}

确保您已equals在 FormBean 中实现。

于 2012-07-24T20:43:38.387 回答
0

使用http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Collection.html#contains%28java.lang.Object%29

确保FormBean实现.equals(Object o),以便它返回人名的字符串在FormBean.person.equals(o)哪里。o

class FormBean {
    String person;
    int SSN;
    String phoneNumber;

    public boolean Equals(Object o) {
        if (o instanceof String) {
            return this.person.equals(o); // Case sensitive
        } else if (o instanceof FormBean) {
            return this.equals(((FormBeans)o).person);
        }
        return false;
    }
}
于 2012-07-24T20:41:00.347 回答
-1

首先关。这是什么鬼?

ArrayList objects = new ArrayList()
for (i++; i < 5; i++) {
    objects.add(FormBean);
}

我是什么?

只需遍历对象列表,检查每个对象以查看另一个列表中是否有匹配项(请参阅 List.contains())http://docs.oracle.com/javase/6/docs/api/java/util /List.html#contains(java.lang.Object ) 并删除不匹配的。

于 2012-07-24T20:37:39.190 回答