Java 比较两个大小不等的数组列表,并扔掉那些不';我没有火柴
我想扔掉在persons arrayList中没有匹配项的FormBean对象。 抱歉,如果代码格式不正确 我有一个这样的arraylistJava 比较两个大小不等的数组列表,并扔掉那些不';我没有火柴,java,Java,我想扔掉在persons arrayList中没有匹配项的FormBean对象。 抱歉,如果代码格式不正确 我有一个这样的arraylist ArrayList persons = new ArrayList(); persons.add("Bill"); persons.add("Chuck"); persons.add("Marry"); ArrayList objects = new ArrayList() for (i++; i < 5; i++) { object
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);
}
然后我有另一个arraylist(大小不等)像这样
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);
}
是否有一种方法可以将persons arraylist与FormBean对象中的person进行比较,并抛出persons arraylist中不匹配的FormBean对象。首先。这是WTF吗
ArrayList objects = new ArrayList()
for (i++; i < 5; i++) {
objects.add(FormBean);
}
ArrayList对象=新建ArrayList()
对于(i++;i<5;i++){
add(FormBean);
}
我是什么
只需在对象列表中循环,检查每个对象在另一个列表中是否存在匹配项(请参见list.contains()),然后删除不匹配的对象
FormBean
列表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;
}
}
您的移除循环应该如下所示:
for (Iterator<FormBean> iterator = objects.iterator(); iterator.hasNext();) {
FormBean bean = iterator.next();
if (!persons.contains(bean.getPerson())) {
iterator.remove();
}
}
for(Iterator Iterator=objects.Iterator();Iterator.hasNext();){
FormBean=iterator.next();
如果(!persons.contains(bean.getPerson())){
iterator.remove();
}
}
确保在FormBean中实现了
equals
。是的,有。写一些代码。另外,不要使用原始集合;使用仿制药。啊,谢谢?我搞不懂密码,这就是我问的原因。我认为这是一个可以做到这一点的地方。如果将persons
aHashSet
而不是ArrayList
,您通常会获得更好的性能。我非常同意@MarkPeters的观点,使用交叉引用数组列表,您可能会面临一些非常糟糕的运行时间。更不用说从中删除元素了。如果您提供了equals的自定义实现,请确保重写equals
方法。如果一个FormBean
与另一个FormBean
具有相同的名称,那么它就等于另一个FormBean
?SSN和电话号码呢?不,请不要这样做!不要为此滥用equals
。如果您现在使用FormBean
instances hashmaps/-set或任何依赖于equals/hashcode契约的东西,您将陷入深深的麻烦。