有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java比较两个不同的ArrayList以匹配元素

我有两个数组列表,我想将请求的元素与允许的元素进行比较

如果允许的元素中存在请求的元素,则应打印该元素

"Allowed elements  <element1>, <element2>, <element3>"

如果请求的元素在允许的元素中不存在,则应打印该元素

"Not allowed <element1>, <element2>, <element3>"

我的代码

public class testList {

    public static void main(String[] args) {

        ArrayList<String> Alist = new ArrayList<String>();
        ArrayList<String> Blist = new ArrayList<String>();

        // allowed elements
        Alist.add("NAME");
        Alist.add("SUBJECT");
        Alist.add("MARKS");

        // requested elements
        Blist.add("NAME");
        Blist.add("AGE");
        Blist.add("DOB");
        Blist.add("SUBJECT");
        Blist.add("MARKS");
        Blist.add("AVERAGE");
        Blist.add("MOBILE");
        Blist.add("EMAIL");

    }
}

结果应该是:

如果请求了不在允许元素中的电子邮件和手机,则应打印“不允许的电子邮件和手机”

如果请求名称、主题和标记,允许的元素应打印“允许的名称、主题和标记”


共 (2) 个答案

  1. # 1 楼答案

    试试这个:

        List<String> newBlist = new ArrayList<String>(Blist);
    
        newBlist.removeAll(Alist);
    
        StringBuilder response = new StringBuilder();        
        List<String> responseList;
        if (newBlist.isEmpty()) {
            response.append("Allowed ");
            responseList = Blist;
        } else {
            response.append("Not Allowed ");
            responseList = newBlist;
        }
    
        for (String str : responseList) {
            response.append(str).append(" ");
        }
    
        System.out.println(response.toString());
    
  2. # 2 楼答案

    这是解决您的问题的非常简单的代码,请尝试此代码,如果有,请告诉我:

    StringBuilder allowBuilder = new StringBuilder("Allowed ");
    StringBuilder notAllowBuilder = new StringBuilder("Not allowed ");
    
    List<String> allowList = new ArrayList<String>();
    List<String> notAllowList = new ArrayList<String>();
    
    for (String blistItem : Blist) {
        if (Alist.contains(blistItem)) {
            allowList.add(blistItem);
        } else {
            notAllowList.add(blistItem);
        }
    }
    
    for (int i = 0; i < allowList.size(); i++) {
        if (i == 0) {
            allowBuilder.append(allowList.get(i));
        } else {
            if (i + 1 < allowList.size()) {
                allowBuilder.append(", ").append(allowList.get(i));
            } else {
                allowBuilder.append(" and ").append(allowList.get(i));
            }
        }
    }
    
    for (int i = 0; i < notAllowList.size(); i++) {
        if (i == 0) {
            notAllowBuilder.append(notAllowList.get(i));
        } else {
            if (i + 1 < notAllowList.size()) {
                notAllowBuilder.append(", ").append(notAllowList.get(i));
            } else {
                notAllowBuilder.append(" and ").append(notAllowList.get(i));
            }
        }
    }
    
    System.out.println(notAllowBuilder.toString());
    System.out.println(allowBuilder.toString());
    

    输出:

    Not allowed AGE, DOB, AVERAGE, MOBILE and EMAIL
    Allowed NAME, SUBJECT and MARKS