【问题标题】:In java, how can i search String array in another String array?在java中,如何在另一个字符串数组中搜索字符串数组?
【发布时间】:2011-08-15 02:26:17
【问题描述】:

我有两个不同的字符串数组。

String[] str1={(ABC),(CDE),(DEF),(FGE),(ERT)};

String[] str2={(ABC),(FGE)};

我想知道 str1 是否有 str2 的所有成员?如何在 str1 中搜索 str2?

【问题讨论】:

  • 你的意思是"ABC",而不是(ABC)等?

标签: java arrays search


【解决方案1】:
Arrays.asList(str1).containsAll(Arrays.asList(str2));

【讨论】:

    【解决方案2】:

    为每个包含数组元素的数组创建一个 Set 对象。然后使用 Set 类的 containsAll 方法检查一个 Set 是否包含另一个 Set 中的所有元素。

    http://download.oracle.com/javase/6/docs/api/java/util/Set.html

    【讨论】:

    • 对于更大的数组,您只需要一个Set(即一个具有快速contains 检查的结构),另一个List(如Arrays.asList())也可以在不损失效率的情况下工作. (它应该是一个 HashSet 或 TreeSet。如果你可以重用它而不是为每次搜索重新创建它,效率最高。)
    • @Paŭlo Ebermann 很好的补充(关于 HashSet 的评论)。虽然 Set 可能只对较大的数组有好处,但我认为它总体上是比 mportiz08 发布的更好的解决方案,因为选择 Set 或 List 对于较小的输入确实无关紧要。
    【解决方案3】:

    您可以在 str1 中搜索 str2 的每个元素。或者,更高效:对 str1 进行排序,并使用二分查找。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-22
      • 1970-01-01
      • 2016-11-15
      • 2022-01-23
      相关资源
      最近更新 更多