问题很简单:
我有两个列表
List<String> columnsOld = DBUtils.GetColumns(db, TableName);
List<String> columnsNew = DBUtils.GetColumns(db, TableName);
我需要得到这些的交集。有没有快速的方法来实现这一目标?
原文由 Pentium10 发布,翻译遵循 CC BY-SA 4.0 许可协议
问题很简单:
我有两个列表
List<String> columnsOld = DBUtils.GetColumns(db, TableName);
List<String> columnsNew = DBUtils.GetColumns(db, TableName);
我需要得到这些的交集。有没有快速的方法来实现这一目标?
原文由 Pentium10 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 Google 的 Guava 库:
Sets.intersection(Sets.newHashSet(setA), Sets.newHashSet(setB))
注意: 这比天真地对两个列表进行交集更有效:它是 O(n+m),而 列表版本 的 O(n×m)。拥有 200 万个项目的列表是 数百万 次操作和数 万亿 次操作之间的区别。
原文由 Sergii Shevchyk 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.2k 阅读
8 回答6k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.2k 阅读
2 回答3.9k 阅读
1 回答2.2k 阅读✓ 已解决
您可以使用 [
retainAll
](http://docs.oracle.com/javase/7/docs/api/java/util/List.html#retainAll(java.util.Collection) 方法: