我有两个带有对象的列表,其中list1(names)仅具有fullnames without middlenams
,另外一个list2(fullnames)具有fullnames with middle names
。如果list1的名称如barack obama
,而list2的名称为barack hussein obama
,则该名称相同但具有中间名。然后,我必须删除list1中的条目barack obama
。
我试过下面的代码,但是它没有删除list1中的条目。
public class Test {
public static void main(String args[]) {
List<String> names = new ArrayList<>()
names.add("shannon sperling");
names.add("john smith");
names.add("Mary Smith");
names.add("kim taylor");
names.add("Barack obama");
List<String> fullnames = new ArrayList<>();
fullnames.add("Mary Elizabeth Smith");
fullnames.add("Lou Henry Hoover");
fullnames.add("Barack hussein obama");
for(Object process :names)
{
if(fullnames.contains(process))
{
names.remove(process);
}
}
System.out.println(names);
}
}
最佳答案
List.contains()
检查相同的对象。 "Barack obama"
和"Barack hussein obama"
显然不同。您需要覆盖contains()
或实现自己的实现List
的类,并添加其他功能以您喜欢的方式比较内容。否则,您的代码块看起来不错。
关于java - 比较,处理和删除Java列表中的条目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19906288/