Java - 比较两个List <List <String >>的最佳方法?

Inf*_*Vol 5 java compare list

比较两个String元素的最佳方法是什么List<List<String>>...

最后,我想知道它们是否包含相同的元素(true)或不包含(false)

这两个我要比较的列表:

ObservableList<List<String>> fnlData = FXCollections.observableList(new LinkedList<>());;

List<List<String>> fnlDataTMP = new LinkedList<>();
Run Code Online (Sandbox Code Playgroud)

我在论坛中搜索了已经回答的问题,但没有任何帮助我...

Mat*_*ini 1

看起来你需要两次迭代

boolean checkEqual(List<List<String>> l1,List<List<String>> l2){
  if(l1.size() != l2.size()){
    return false;
  }
  if(l1.hashCode() != l2.hashCode()){
    return false;
  }
  for(int i=0; i<l1.size(); i++) {
    List<String> curr = l1.get(i);
    List<String> comp = l2.get(i);
    if(curr.size() != comp.size()){
      return false;
    }
    if(curr.hashCode() != comp.hashCode()){
      return false;
    }
    for(int j=0; j<curr.size(); j++) {
      if(!curr.get(j).equals(comp.get(j))){
        return false;
      }
    }
  }
  return true;
}
Run Code Online (Sandbox Code Playgroud)

您可以改进检查 hashCode 的第一个差异的解决方案

if(l1.hashCode() != l2.hashCode()){
  return false;
}
Run Code Online (Sandbox Code Playgroud)

如果 hashCode 相等,则检查最终的深度差异