【发布时间】:2011-08-15 02:26:17
【问题描述】:
我有两个不同的字符串数组。
String[] str1={(ABC),(CDE),(DEF),(FGE),(ERT)};
String[] str2={(ABC),(FGE)};
我想知道 str1 是否有 str2 的所有成员?如何在 str1 中搜索 str2?
【问题讨论】:
-
你的意思是
"ABC",而不是(ABC)等?
我有两个不同的字符串数组。
String[] str1={(ABC),(CDE),(DEF),(FGE),(ERT)};
String[] str2={(ABC),(FGE)};
我想知道 str1 是否有 str2 的所有成员?如何在 str1 中搜索 str2?
【问题讨论】:
"ABC",而不是(ABC)等?
Arrays.asList(str1).containsAll(Arrays.asList(str2));
【讨论】:
为每个包含数组元素的数组创建一个 Set 对象。然后使用 Set 类的 containsAll 方法检查一个 Set 是否包含另一个 Set 中的所有元素。
http://download.oracle.com/javase/6/docs/api/java/util/Set.html
【讨论】:
Set(即一个具有快速contains 检查的结构),另一个List(如Arrays.asList())也可以在不损失效率的情况下工作. (它应该是一个 HashSet 或 TreeSet。如果你可以重用它而不是为每次搜索重新创建它,效率最高。)
您可以在 str1 中搜索 str2 的每个元素。或者,更高效:对 str1 进行排序,并使用二分查找。
【讨论】: