繁体   English   中英

遍历两个列表时如何检查字符串是否相等?

[英]How to check String equality while iterating over two lists?

我有两个 java 类:

public class MyClass1 {
  private String userId;
  private String userName;
  private List<CustomList1> customList1;

  // getters and setters
  // inner CustomList1 class
}

public class MyClass2 {
  private String userId;
  private List<CustomList2> customList2;

  // getters and setters
  // inner CustomList2 class
}

现在,我有这些类的列表:

List<MyClass1> classOneList;
List<MyClass2> classTwoList;

classOneListclassTwoList列表中,object 应按userId升序排序。 两个列表中的userId应该具有相同的值。 我要检查的是:

  1. 两个列表的大小相同吗? 如果没有,就抛出错误异常。
  2. 两者中的每个下一个元素是否都列出了相同的userId 如果不是,则抛出另一个异常。

第 1 步。我已经完成了简单的 if 语句。

根据原型,第 2 步应该如下所示:

for (el1, el2 : classOneList, classTwoList) {
  el1.getUserId().isEqualTo(el2.getUserId());
}

尝试以下代码解决您的问题。

public class Testing {

    public static void main(String[] args) {
        Map<String, List<String>> map1 = new LinkedHashMap<String, List<String>>();
        List<String> m1l1 = new LinkedList<String>();
        m1l1.add("One");
        m1l1.add("Two");
        m1l1.add("Three");
        m1l1.add("Four");

        map1.put("1", m1l1);

        List<String> m1l2 = new LinkedList<String>();
        m1l2.add("One");
        m1l2.add("Two");
        m1l2.add("Three");
        m1l2.add("Four");

        map1.put("2", m1l2);

        // Add more element into the map1 by creating more list.

        Map<String, List<String>> map2 = new LinkedHashMap<String, List<String>>();
        List<String> m2l1 = new LinkedList<String>();
        m2l1.add("One");
        m2l1.add("Two");
        m2l1.add("Three");
        m2l1.add("Four");

        map2.put("1", m2l1);

        // Add more element into the map2 by creating more list.

        for (Entry<String, List<String>> entry : map1.entrySet()) {
            if (map2.containsKey(entry.getKey())) {
                if (entry.getValue().size() == map2.get(entry.getKey()).size()) {

                } else {
                    System.out.println("UserId are same but list are different for userid: " + entry.getKey());
                }
            }
            else {
                System.out.println("Userid '"+entry.getKey()+"' exists in map1 but is not found in map2");
            }
        }

    }
}

希望这可以帮助你。

 if(classOneList.size() != classTwoList.size()){
        throw new ErrorException();
    }else{
        classOneList = classOneList.stream().sorted(Comparator.comparing(MyClass1::getUserId)).collect(Collectors.toList());
        classTwoList = classTwoList.stream().sorted(Comparator.comparing(MyClass2::getUserId)).collect(Collectors.toList());
        for (int i = 0; i < classOneList.size(); i++){
            if(!classOneList.get(i).getUserId().equals(classTwoList.get(i).getUserId())){
                throw new AnotherErrorException();
            }
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM