Как сравнить два списка, чтобы получить совпадающие элементы и несовпадающие элементы - PullRequest
0 голосов
/ 09 июля 2020

Ниже точки 1 и 2 являются моими входными данными, в приведенном ниже коде я пытаюсь сравнить как Arraylist, чтобы получить совпадающие и несовпадающие элементы, но я получаю только несовпадающие записи.

  1. Arraylist1 = [Проверить, равно ли документ, Дата документа - Между, номер фонда - равно, номер счета - равно, олово - равно, номер компании - равно, номер дилера - равно, Идентификатор участника - равно, Группа Id Like Equals In, Тип учетной записи, подобный Equals In, Код типа документа, подобный Equals In, Печать равно, Test two]

  2. arraylist2 = [Дата документа похожа на Equals Between, Fund Number Equals Like, Номер счета, как равно, олово равно, номер компании, равно, номер дилера, как равно]

3. Когда я пытаюсь удалить лишнее из пробела "arrayList2", я получение ниже [Дата документа LikeEqualsBetween, номер фонда EqualsLike, номер счета LikeEqualsIn, Tin EqualsLike,

Мой код начинается отсюда

      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);
     }
 }

4. ниже показан результат, который я получаю, вы можете видеть, что я получаю только несоответствующее значение, которое есть нет подходящего значения.

    --------Not matching elements---------------------  =  Document Type Code Like Equals In
    ---------Not matching elements---------------------  =  Test  two 
   --------Not matching elements---------------------  =  Document Date Like Equals Between
   -----------------Not matching elements---------------------  =  Check Document  Equals 
   -----------------Not matching elements---------------------  =  Member Id Like Equals In
  -----------------Not matching elements---------------------  =  Dealer Number Like Equals In
    -----------------Not matching elements---------------------  =  Print  Equals 
   -----------------Not matching elements---------------------  =  Group Id Like Equals In
-----------------Not matching elements---------------------  =  Fund Number Like Equals 
-----------------Not matching elements---------------------  =  Tin Like Equals 
-----------------Not matching elements---------------------  =  Account Type Like Equals In

----------------- Несоответствующие элементы ----------------- ---- = Номер счета, как равно ----------------- Элементы не совпадают -------------------- - = Номер компании равен

Ответы [ 2 ]

0 голосов
/ 09 июля 2020

Вы можете достичь того же результата, используя одну хэш-карту.

import java.util.*;

public class Practice {
    
    public static void main(String[] args) {
         
        ArrayList<String> arraylist1 = new ArrayList<>(Arrays.asList("Check Document Equals" , "Document Date Like Equals Between", "Fund Number Like Equals" , "Account Number Like Equals In", "Tin Like Equals" , "Company Number Like Equals" , "Dealer Number Like Equals In", "Member Id Like Equals In", "Group Id Like Equals In", "Account Type Like Equals In", "Document Type Code Like Equals In", "Print Equals" , "Test two" ));
        ArrayList<String> arraylist2 = new ArrayList<>(Arrays.asList("Document Date Like Equals Between", "Fund Number Equals Like", "Account Number Like Equals In", "Tin Equals Like", "Company Number Equals Like", "Dealer Number Like Equals"));

        HashSet<String> hs = new HashSet<String>(arraylist1);

        for (String match : arraylist2) {
            
            if (hs.contains(match)) {
                System.out.println("-----------------matching Elements--------------------- =  " + match);
            }
            else {                
                System.out.println("-----------------Not matching elements---------------------  =  " + match);
            }
        }

    }
}
0 голосов
/ 09 июля 2020

Я установил это с помощью простого основного метода, и, похоже, он у меня работает. Вы можете попробовать это на простом примере, таком как мой.

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);
            }
        }
    }
}

Вывод:

----------------- соответствующие элементы- -------------------- = a

----------------- Не совпадающие элементы-- ------------------- = b

...