我有一些字符串对象存储在列表中,
例如:[美国、中国、印度、英国、法国、希腊、波兰、墨西哥]
并且预期列表的顺序应该始终与上面的列表相同。
但问题是,我用来比较的列表有时没有任何上述国家/地区代码...
例如,我要比较的列表是 [US、CN、EN、GR、PL、MX]
但它应该通过并返回 true,因为它的顺序与第一个列表相同。
如果列表类似于 [CN、US、EN、GR、PL、MX],则应该失败,因为 CN 位于 US 之前。
列表是否包含所有值并不重要,即使我们跳过某些国家/地区代码,如果其他国家/地区代码的顺序正确,它也应该通过
请告诉我最好的方法是什么?
最佳答案
您可以从列表中删除所有项目进行检查,然后比较两个列表:
public static boolean check(String checkedAgainst, String items) {
List<String> checkedAgainstList = new ArrayList<>(Arrays.asList(checkedAgainst.split("\\s*,\\s*")));
List<String> list = Arrays.asList(items.split("\\s*,\\s*"));
checkedAgainstList.retainAll(list);
return checkedAgainstList.equals(list);
}
测试:
boolean valid = check("US, CN , IN, EN, FR, GR, PL, MX", "US, CN, EN, GR,PL, MX"); // true
关于java - 当一个列表不稳定时如何比较两个列表的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52009262/