我有两个带有对象的列表,其中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/

10-10 09:42