Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何比较两个列表以获得匹配元素和非匹配元素_Java_Arraylist - Fatal编程技术网

Java 如何比较两个列表以获得匹配元素和非匹配元素

Java 如何比较两个列表以获得匹配元素和非匹配元素,java,arraylist,Java,Arraylist,下面的第1点和第2点是我的输入,在下面的代码中,我试图比较Arraylist以获得匹配和不匹配的元素,但我只获得不匹配的记录 arraylist1=[检查凭证等于,凭证日期等于,基金号等于,账号等于,Tin等于,公司号等于,经销商号等于,会员Id等于,集团Id等于,账户类型等于,凭证类型代码等于,打印等于,测试二] arraylist2=[文档日期] 等于 两者之间,基金数量相等 账号 等于 锡等于锡 比如,公司数量等于 像,经销商号码像 相等] 3.当我试图从“arrayList2”中删除

下面的第1点和第2点是我的输入,在下面的代码中,我试图比较Arraylist以获得匹配和不匹配的元素,但我只获得不匹配的记录

  • arraylist1=[检查凭证等于,凭证日期等于,基金号等于,账号等于,Tin等于,公司号等于,经销商号等于,会员Id等于,集团Id等于,账户类型等于,凭证类型代码等于,打印等于,测试二]

  • arraylist2=[文档日期] 等于 两者之间,基金数量相等 账号 等于 锡等于锡 比如,公司数量等于 像,经销商号码像 相等]

  • 3.当我试图从“arrayList2”中删除额外的空间时,我会在下面 [凭证日期如EqualsBetween、基金号等、账号如Equalsin、Tin等

  • 我的代码从这里开始

          HashSet<String> hs1 = new HashSet<String>();
           HashSet<String> hs2 = new HashSet<String>();
            for (String match : arraylist2 ) {
             hs1.add(match);
          }
              for (String match : arraylist1) {
            hs2.add(match);
          }
          for (String match : hs2) {
         boolean b = hs1.add(match);
         if (b == false) {
             matchingFields = match;
             System.out.println("-----------------matching Elements--------------------- =  " + 
              matchingFields);
    
         } else {
             nonMatchingFields = match;
             System.out.println("-----------------Not matching elements---------------------  =  " + 
           nonMatchingFields);
         }
     }
    
    -----------------不匹配的元素----------------=类似于中的等于的帐号
    -----------------不匹配元素-------------------=公司编号,比如Equals,我用一个简单的main方法设置了它,它似乎对我有效。你可能想用一个像我这样的简单示例来尝试它

    package test;
    
    import java.util.ArrayList;
    import java.util.HashSet;
    
    class Test{
        public static void main(String[] args) {
            ArrayList<String> a1 = new ArrayList<String>();
            a1.add("a");
            a1.add("b");
    
            ArrayList<String> a2 = new ArrayList<String>();
            a2.add("c");
            a2.add("a");
            checkMatch(a1, a2);
        }
    
    
        public static void checkMatch(ArrayList<String> arraylist1, ArrayList<String> arraylist2 ) {
            HashSet<String> hs1 = new HashSet<String>();
            HashSet<String> hs2 = new HashSet<String>();
            for (String match : arraylist2 ) {
                hs1.add(match);
            }
            for (String match : arraylist1) {
                hs2.add(match);
            }
            for (String match : hs2) {
                boolean b = hs1.add(match);
                if (b == false) {
                    String matchingFields = match;
                    System.out.println("-----------------matching Elements--------------------- =  " + 
                            matchingFields);
    
                } else {
                    String nonMatchingFields = match;
                    System.out.println("-----------------Not matching elements---------------------  =  " + 
                            nonMatchingFields);
                }
            }
        }
    }
    
    封装测试;
    导入java.util.ArrayList;
    导入java.util.HashSet;
    课堂测试{
    公共静态void main(字符串[]args){
    ArrayList a1=新的ArrayList();
    a1.添加(“a”);
    a1.添加(“b”);
    ArrayList a2=新的ArrayList();
    a2.添加(“c”);
    a2.添加(“a”);
    检查匹配(a1,a2);
    }
    公共静态无效检查匹配(ArrayList ArrayList 1、ArrayList ArrayList 2){
    HashSet hs1=新的HashSet();
    HashSet hs2=新的HashSet();
    for(字符串匹配:arraylist2){
    hs1.添加(匹配);
    }
    for(字符串匹配:arraylist1){
    hs2.添加(匹配);
    }
    用于(字符串匹配:hs2){
    布尔b=hs1.add(匹配);
    如果(b==false){
    字符串匹配字段=匹配;
    System.out.println(“--------------匹配元素-------------------=”+
    匹配字段);
    }否则{
    字符串非匹配字段=匹配;
    System.out.println(“--------------不匹配元素-------------------=”+
    非匹配字段);
    }
    }
    }
    }
    
    输出:

    -----------------匹配元素----------------=a


    -----------------不匹配元素----------------=b

    您可以通过使用单个hashmap获得相同的结果

    import java.util.*;
    公共课堂实践{
    公共静态void main(字符串[]args){
    ArrayList ArrayList 1=新ArrayList(Arrays.asList(“检查凭证等于”、“凭证日期等于之间”、“基金号等于”、“账户号等于中”、“Tin号等于”、“公司号等于”、“经销商号等于中”、“会员Id等于中”、“组Id等于中”、“账户类型等于中”),“文档类型代码,如中的等号”、“打印等号”、“测试二”);
    ArrayList ArrayList 2=新的ArrayList(Arrays.asList(“文档日期等于之间”、“基金号等于中”、“账号等于中”、“Tin等于中”、“公司号等于中”、“经销商号等于中”));
    HashSet hs=新的HashSet(arraylist1);
    for(字符串匹配:arraylist2){
    如果(hs.包含(匹配)){
    System.out.println(“--------------匹配元素-------------------=”+匹配);
    }
    否则{
    System.out.println(“--------------不匹配元素-------------------=”+匹配);
    }
    }
    }
    }
    
    为什么标记了
    selenium
    selenium webdriver
    ?因为我输入的两个数据通过TestNg selenium code从URL检索并不重要,所以即使不使用Seleniumdid检查是否有多余的空间,您也可以始终构造一个
    HashSet()
    (无论是在行乞处,还是在字符串的中间或末尾)?删除多余的空间后,我将以以下格式输出=[文档日期,如EqualsBetween,基金编号EqualsLike,账号,如Equalsin,Tin EqualsLike,
    package test;
    
    import java.util.ArrayList;
    import java.util.HashSet;
    
    class Test{
        public static void main(String[] args) {
            ArrayList<String> a1 = new ArrayList<String>();
            a1.add("a");
            a1.add("b");
    
            ArrayList<String> a2 = new ArrayList<String>();
            a2.add("c");
            a2.add("a");
            checkMatch(a1, a2);
        }
    
    
        public static void checkMatch(ArrayList<String> arraylist1, ArrayList<String> arraylist2 ) {
            HashSet<String> hs1 = new HashSet<String>();
            HashSet<String> hs2 = new HashSet<String>();
            for (String match : arraylist2 ) {
                hs1.add(match);
            }
            for (String match : arraylist1) {
                hs2.add(match);
            }
            for (String match : hs2) {
                boolean b = hs1.add(match);
                if (b == false) {
                    String matchingFields = match;
                    System.out.println("-----------------matching Elements--------------------- =  " + 
                            matchingFields);
    
                } else {
                    String nonMatchingFields = match;
                    System.out.println("-----------------Not matching elements---------------------  =  " + 
                            nonMatchingFields);
                }
            }
        }
    }