Pen*_*m10 61 java intersection list
问题很简单:
我有两个List
List<String> columnsOld = DBUtils.GetColumns(db, TableName);
List<String> columnsNew = DBUtils.GetColumns(db, TableName);
Run Code Online (Sandbox Code Playgroud)
我需要得到这些的交集.有没有快速实现这一目标的方法?
Rom*_*man 111
你可以使用retainAll方法:
columnsOld.retainAll (columnsNew);
Run Code Online (Sandbox Code Playgroud)
bjo*_*hol 18
由于retainAll不会触及参数集合,因此速度会更快:
List<String> columnsOld = DBUtils.GetColumns(db, TableName);
List<String> columnsNew = DBUtils.GetColumns(db, TableName);
for(int i = columnsNew.size() - 1; i > -1; --i){
String str = columnsNew.get(i);
if(!columnsOld.remove(str))
columnsNew.remove(str);
}
Run Code Online (Sandbox Code Playgroud)
交集将是columnsNew中剩余的值.删除已经比较的值fom columnsOld将减少所需的比较次数.
小智 8
怎么样
private List<String> intersect(List<String> A, List<String> B) {
List<String> rtnList = new LinkedList<>();
for(String dto : A) {
if(B.contains(dto)) {
rtnList.add(dto);
}
}
return rtnList;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
77073 次 |
| 最近记录: |