java - Java 中列表的比较、处理和删除条目

标签 java

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

相关文章:

来自 JAR 的 Java 可执行文件

java - 用于 Mac 的简单 Java IDE?

java - 在 Windows 7 中使用命令提示符设置类路径

java - 如何使用 vSphere 和 Java 查找 esx 主机的 iops?

java - 寻找 Rxjava 运算符将源合并到一个流中

java - 使用 Spring 托管线程创建 Spring 线程池

java - 为什么 'condition && statement()' 在 Java 世界不流行?

java - 使用 unicode 显示欧元符号并将字符更改为大写

java - 当用户未登录且客户端机器崩溃时如何维护用户数据状态?

java - 如果没有设置则设置Http状态码