我有两个包含对象的列表,其中 list1(names) 只有没有中间名的全名
,而另一个 list2(fullnames) 则有有中间名的全名
。如果 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/