如何检查两个字符串列表?

时间:2013-02-04 19:43:04

标签: java string compare

参加OOP Java课程,因为我对这门语言完全陌生,并且还没有意识到它提供的许多工具,我发现自己在黑暗中摸索着解决简单的事情,我可以对这些问题进行硬编码但是我觉得用java.util做更简单的方法。

假设我有一个字符串列表

String[] stringOne = {"a","b","c", "potato"};
String[] stringTwo = {"potato", "13"};

如何查看stringTwostringOne中任何特定项目的出现次数?或相反亦然。每当我遇到这个问题时,我宁愿不进行双循环(或者做一个双循环方法)。

现在我使用Collections.frequency()并且只循环一次,但有更简单的方法吗?感谢。

1 个答案:

答案 0 :(得分:3)

  

假设我有一个字符串列表

String[] stringOne = {"a","b","c", "potato"};
String[] stringTwo = {"potato", "13"};

这些是“数组”,而不是“列表”。 Arrays.asList(stringOne)stringOne引用的数组的列表包装器。

  

如何在stringOne中查看stringTwo中任何给定项目的次数?

new HashSet(Arrays.asList(stringOne)).retainAll(Arrays.asList(stringTwo))

将为您提供两者中的元素集。

使用Bag代替集合的类似方法会让您受到重视。

  

retainAll(Collection coll)

     

根据基数删除不在给定集合中的任何行李成员。也就是说,如果给定的集合coll包含给定对象的n个副本并且该包具有m> 1。 n份,然后从包中删除m-n份。此外,如果e是包中的对象!coll.contains(e),则删除e及其任何副本。

集合类中使用的等价概念是由Object.equals(object)定义的,java.lang.String覆盖了按字典顺序进行比较。

如果您需要在数组中返回结果,请尝试将内容转储为字符串的myBag.toArray(new String[0])。该参数在文档中进行了解释,但简而言之,它是一个类型提示,可以解决Java破坏的数组差异。